`

PHP开发笔记系列(八)- 上传与下载

阅读更多

    最近由于项目需要,在GZBGY进行了闭关,与同行的Developer进行了深入的交流,成果不赖。丢下了 《PHP开发笔记系列(XAMPP+PhpEclipse+XDebug)》 ,今天重新更新一下,这次讲上传下载。

 

    上传与下载两个功能是再正常不过的基本功能,在java的开发中,下载会使用File类将文件内容以流的形式写入到response中,并设置相应和http header,让浏览器识别本次是文件下载。在PHP中也是类似,本文《PHP开发笔记系列(八)- 上传与下载》 将是《PHP开发笔记系列(XAMPP+PhpEclipse+XDebug)》 的第八篇,讲述如何使用PHP完成文件的上传与下载操作。


    1. 文件下载

    文件下载的操作分为两部分,步骤:1)设置http header,2)读取文件。这里我们编写两个php脚本,第一个为file-list.php,用来显示当前文件夹下的所有文件夹和文件,供下载,第二个为download.php,具体的下载代码。代码如下:

 

file:file-list.php
url:http://localhost:88/download-upload/file-list.php
<?php
    $location = './';
    
    $dp = opendir($location);
    
    while ($entry = readdir($dp)){
        if(is_dir($entry))
        {
            echo '[DIR] '.$entry. '<br/>';
        }elseif (is_file($entry))
        {
            echo '[FILE] <a href=download.php?filename='.$entry.'>'.$entry. '</a><br/>';
        }
    }
    closedir($dp);
    
    echo "<a href='upload-form.php'>upload</a>";

?>
 

 

file:download.php
url:http://localhost:88/download-upload/download.php?filename=xxx
<?php
    if (isset($_GET['filename'])) {
        $filename = $_GET['filename'];
    } else {
        die('Parameter filename doesn\'t exist!');
    }
    
    if (!file_exists($filename)) {
       die($filename.' doesn\'t exist!'); 
    }
    
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length: ".filesize($filename));
    Header("Content-Disposition: attachment; filename=" . $filename); 
    
    readfile($filename);
    
?>
 

    2. 文件上传

    在PHP中,文件上传非常简单,因为php已经自动识别enctype为"multipart/form-data"的请求,自动将里面的文件域中的内容upload到php的tmp文件夹中,我们可以过$_FILES["文件域名称"]["属性"],如$_FILES["file"]["name"]表示上传文件的原始名称、$_FILES["file"]["type"]表示上传文件的类型、$_FILES["file"]["tmp_name"]表示上传文件在php临时文件夹中的路径。由于生成的临时文件会被清空,因此我们需要使用move_uploaded_file()函数将临时文件移动到我们的指定目录中,其中第一个参数为临时文件的路径,第二个参数为目标文件的路径。代码如下:

 

file:upload-form.php
url:http://localhost:88/download-upload/upload-form.php
<form action="upload.php" method="post" enctype="multipart/form-data">
	<label for="file">Filename:</label> 
	<input type="file" name="file" id="file" /> <br />
	<input type="submit" name="submit" value="Submit" />
</form>
 

 

file:upload.php
url:http://localhost:88/download-upload/upload.php
<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "Error: ".$_FILES["file"]["error"] . "<br />";
}
else
{
    echo "Upload: ".$_FILES["file"]["name"]."<br />";
    echo "Type: ".$_FILES["file"]["type"]."<br />";
    echo "Size: ".($_FILES["file"]["size"] / 1024)." Kb<br />";
    echo "Temp file: ".$_FILES["file"]["tmp_name"]."<br />";
    
    move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
    
    echo "<a href='file-list.php'>file-list</a>";
}
?>
 

   本文地址:http://ryan-d.iteye.com/blog/1546706

 

 

分享到:
评论

相关推荐

    PHP开发笔记系列(四)-文件操作

    在PHP开发过程中,文件操作是不可或缺的一部分,尤其是在构建动态网站或Web应用程序时。这篇笔记将深入探讨PHP如何处理文件,包括读取、写入、移动、删除和处理目录。我们将从基本的文件I/O操作开始,然后逐步深入到...

    PHP开发笔记系列(六)- 内置FTP函数

    在PHP开发过程中,内置的FTP函数提供了一种方便的方式来与FTP服务器进行交互,例如上传、下载、删除文件以及管理目录。这些函数使开发者无需编写复杂的网络协议代码就能实现FTP功能,提高了开发效率。本篇文章将深入...

    韩顺平php系列(源代码+笔记)

    3. **文件操作**:介绍如何读取、写入、复制、移动和删除文件,以及文件上传和下载的实现方法。 4. **表单处理**:讲解HTML表单的使用和PHP接收表单数据的方法,包括GET和POST提交方式。 5. **数据库交互**:通常...

    按照视频课程整理php笔记

    5. **文件操作**:理解文件读写、上传下载等操作。 6. **面向对象编程**:学习类、对象、继承、封装和多态的概念。 7. **错误与异常处理**:了解如何有效地处理程序中的错误和异常。 8. **数据库交互**:通过PDO或...

    web开发笔记

    "web开发笔记"这个标题暗示了这是一个关于Web开发的学习资料或教程,可能包含了一系列实践和理论知识。"扩展的aja项目"可能是指一个基于Ajax(异步JavaScript和XML)的项目,它强调了动态网页更新和数据交换的重要性...

    2016泰牛PHP基础班加大牛版-视频教程全套(有笔记)

    4. PHP文件操作:文件读写、目录操作、上传下载功能的实现。 5. PHP函数:内置函数的使用,自定义函数的编写,以及函数的参数传递和返回值。 6. PHP面向对象编程:类与对象的概念,封装、继承、多态的实现,以及...

    PHP基础笔记pdf

    #### 一、PHP简介与特点 **PHP**(Hypertext Preprocessor,即“超文本预处理器”),是一种广泛使用的开源通用脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法吸收了C语言、Java和Perl的特点,利于学习,使用...

    PHP学习笔记

    3. **PHP字符串与正则表达式**(03_PHP字符串+正则.doc):字符串处理是PHP开发中的重要部分,包括字符串的连接、查找、替换、分割等操作。正则表达式用于复杂的数据匹配和格式校验,文件中会详细解释正则语法和PHP...

    韩顺平 PHP课程笔记(html+css+php)

    3. **文件操作**:PHP可以读取、写入和操作文件,如fopen、fwrite、fclose等函数,以及文件上传和下载功能。 4. **数据库交互**:PHP常与MySQL数据库结合,使用PDO或mysqli扩展进行数据查询、插入、更新和删除操作...

    php文档笔记

    - **安装PHP与扩展**:`yum install`命令用于安装PHP及一系列扩展,如`php-mysql`、`php-fpm`等,确保PHP能与MySQL交互。`systemctl restart httpd`重启Apache以应用配置。 - **调整PHP配置**:通过`vi /etc/...

    课件-PHP3程序设计01-12

    5. **文件操作**:07.PDF可能涵盖文件系统交互,如打开、读取、写入和关闭文件,以及文件上传和下载的处理,理解fopen、fclose、fwrite等函数的使用。 6. **错误与异常处理**:PHP3开始引入了错误处理机制,学习者...

    基于PHP的有道笔记 API (libNote).zip

    这个库通常包含一系列类和方法,用于处理登录验证、笔记操作、资源上传等任务。通过使用libNote,开发者可以创建应用程序,帮助用户实现如查看笔记、添加新笔记、搜索笔记、管理笔记本等功能,同时也支持笔记内容的...

    html课堂笔记2之php基础

    根据给定的文件信息,以下是对“html课堂笔记2之php基础”中涉及的相关知识点的详细解析: ### HTML 表单基础知识 #### 表单标签 `&lt;form&gt;` 表单是网页中用于收集用户输入数据的重要组成部分。`&lt;form&gt;` 标签用于...

    php笔记详细

    在PHP中,与MySQL数据库的交互是通过一系列预定义的函数完成的。以下是一些关键的数据库操作函数: - `mysql_connect`:用于建立与MySQL服务器的连接。参数包括服务器地址、用户名和密码。 - `mysql_select_db`:...

    PHP100视频教程45:如何用PHP开发一个完整的网站.rar

    《PHP100视频教程45:如何用PHP开发一个完整的网站》是一份全面的教程资源,旨在帮助学习者掌握使用PHP语言构建网站的核心技术。本教程通过视频和辅助材料,详细介绍了从基础到进阶的PHP开发流程,旨在使初学者能够...

    hanshunpingPHP_21天学通php_

    此外,PHP还支持命名空间、接口和 traits,这些都是现代PHP开发中不可或缺的知识。 错误和异常处理是程序稳定性的重要保障。理解PHP的错误报告机制,学会使用try...catch块处理异常,能够有效地预防和解决运行时...

    PHP100视频教程

    3. **文件操作**:文件读写、上传下载、目录操作等。 4. **错误和异常处理**:理解PHP的错误类型、如何抛出和捕获异常。 5. **面向对象编程**:类、对象、继承、封装和多态性。 6. **数据库交互**:MySQL连接、查询...

    EduSoho二次开发文档

    EduSoho二次开发文档为开发者提供了一系列的指导,包括文件目录结构、系统模块说明、开发模式的配置、以及如何创建自定义路由、控制器和模板。 文件目录结构说明: - App/cache:用于存放系统缓存数据。 - App/...

Global site tag (gtag.js) - Google Analytics