- 浏览: 72741 次
- 性别:
- 来自: 广州
最新评论
最近由于项目需要,在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
- download-upload.zip (3.3 KB)
- 下载次数: 3
发表评论
-
php curl in windows configuration
2012-09-11 11:32 0Just an additional note for Win ... -
PHP开发笔记系列(九)- 数组(四)
2012-06-24 23:13 1560经过《PHP开发笔记系列(九)- 数组(一)》 、《 ... -
PHP开发笔记系列(九)- 数组(三)
2012-06-24 16:10 1822写了两篇关于Php数组的日常使用,本篇《PHP开发笔记 ... -
PHP开发笔记系列(九)- 数组(二)
2012-06-23 23:22 1913昨晚临睡前写完了《PHP开发笔记系列(九)- 数组( ... -
PHP开发笔记系列(九)- 数组(一)
2012-06-22 22:34 1568最近在做项目的时候,经常需要用到关联数组的处理,发现P ... -
php 正则表达式
2012-06-15 12:10 0php 正则表达式 -
PHP XML处理
2012-06-15 11:47 0PHP XML处理 -
PHP开发笔记系列(十)- 电子邮件
2012-06-01 17:05 0Mail在应用程序中经常会使用到,例如注册成功后的账号 ... -
PHP开发笔记系列(XAMPP+PhpEclipse+XDebug)
2012-05-29 21:51 1949第一篇:《PHP开发 ... -
PHP开发笔记系列(七)- 压缩与解压缩
2012-06-06 20:27 3529压缩与解压缩,在一般的web应用程序中可能用得不 ... -
PHP开发笔记系列(六)- 内置FTP函数
2012-06-04 08:57 1665FTP是我们经常用到的一种服务器,能够用来接收第三方系 ... -
PHP开发笔记系列(五)- INI文件解释
2012-06-01 15:52 1955在JAVA开发中,我 ... -
PHP开发笔记系列(四)-文件操作
2012-05-30 20:32 2236对于一般的web应用程序,数据会保存在数据库表中,但是 ... -
PHP开发笔记系列(三)-日期与时间
2012-05-29 19:53 3879前两篇完成了 《P ... -
PHP开发笔记系列(二)-字符串使用
2012-05-29 11:29 1627经过了《PHP开发笔记系列(一)-PDO使用 ... -
PHP开发笔记系列(一)-PDO使用
2012-05-28 21:16 10692之前一段时间,开始了php的研究,看了关于PDO的一 ...
相关推荐
在PHP开发过程中,文件操作是不可或缺的一部分,尤其是在构建动态网站或Web应用程序时。这篇笔记将深入探讨PHP如何处理文件,包括读取、写入、移动、删除和处理目录。我们将从基本的文件I/O操作开始,然后逐步深入到...
在PHP开发过程中,内置的FTP函数提供了一种方便的方式来与FTP服务器进行交互,例如上传、下载、删除文件以及管理目录。这些函数使开发者无需编写复杂的网络协议代码就能实现FTP功能,提高了开发效率。本篇文章将深入...
3. **文件操作**:介绍如何读取、写入、复制、移动和删除文件,以及文件上传和下载的实现方法。 4. **表单处理**:讲解HTML表单的使用和PHP接收表单数据的方法,包括GET和POST提交方式。 5. **数据库交互**:通常...
5. **文件操作**:理解文件读写、上传下载等操作。 6. **面向对象编程**:学习类、对象、继承、封装和多态的概念。 7. **错误与异常处理**:了解如何有效地处理程序中的错误和异常。 8. **数据库交互**:通过PDO或...
"web开发笔记"这个标题暗示了这是一个关于Web开发的学习资料或教程,可能包含了一系列实践和理论知识。"扩展的aja项目"可能是指一个基于Ajax(异步JavaScript和XML)的项目,它强调了动态网页更新和数据交换的重要性...
4. PHP文件操作:文件读写、目录操作、上传下载功能的实现。 5. PHP函数:内置函数的使用,自定义函数的编写,以及函数的参数传递和返回值。 6. PHP面向对象编程:类与对象的概念,封装、继承、多态的实现,以及...
#### 一、PHP简介与特点 **PHP**(Hypertext Preprocessor,即“超文本预处理器”),是一种广泛使用的开源通用脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法吸收了C语言、Java和Perl的特点,利于学习,使用...
3. **PHP字符串与正则表达式**(03_PHP字符串+正则.doc):字符串处理是PHP开发中的重要部分,包括字符串的连接、查找、替换、分割等操作。正则表达式用于复杂的数据匹配和格式校验,文件中会详细解释正则语法和PHP...
3. **文件操作**:PHP可以读取、写入和操作文件,如fopen、fwrite、fclose等函数,以及文件上传和下载功能。 4. **数据库交互**:PHP常与MySQL数据库结合,使用PDO或mysqli扩展进行数据查询、插入、更新和删除操作...
- **安装PHP与扩展**:`yum install`命令用于安装PHP及一系列扩展,如`php-mysql`、`php-fpm`等,确保PHP能与MySQL交互。`systemctl restart httpd`重启Apache以应用配置。 - **调整PHP配置**:通过`vi /etc/...
5. **文件操作**:07.PDF可能涵盖文件系统交互,如打开、读取、写入和关闭文件,以及文件上传和下载的处理,理解fopen、fclose、fwrite等函数的使用。 6. **错误与异常处理**:PHP3开始引入了错误处理机制,学习者...
这个库通常包含一系列类和方法,用于处理登录验证、笔记操作、资源上传等任务。通过使用libNote,开发者可以创建应用程序,帮助用户实现如查看笔记、添加新笔记、搜索笔记、管理笔记本等功能,同时也支持笔记内容的...
根据给定的文件信息,以下是对“html课堂笔记2之php基础”中涉及的相关知识点的详细解析: ### HTML 表单基础知识 #### 表单标签 `<form>` 表单是网页中用于收集用户输入数据的重要组成部分。`<form>` 标签用于...
在PHP中,与MySQL数据库的交互是通过一系列预定义的函数完成的。以下是一些关键的数据库操作函数: - `mysql_connect`:用于建立与MySQL服务器的连接。参数包括服务器地址、用户名和密码。 - `mysql_select_db`:...
《PHP100视频教程45:如何用PHP开发一个完整的网站》是一份全面的教程资源,旨在帮助学习者掌握使用PHP语言构建网站的核心技术。本教程通过视频和辅助材料,详细介绍了从基础到进阶的PHP开发流程,旨在使初学者能够...
此外,PHP还支持命名空间、接口和 traits,这些都是现代PHP开发中不可或缺的知识。 错误和异常处理是程序稳定性的重要保障。理解PHP的错误报告机制,学会使用try...catch块处理异常,能够有效地预防和解决运行时...
3. **文件操作**:文件读写、上传下载、目录操作等。 4. **错误和异常处理**:理解PHP的错误类型、如何抛出和捕获异常。 5. **面向对象编程**:类、对象、继承、封装和多态性。 6. **数据库交互**:MySQL连接、查询...
EduSoho二次开发文档为开发者提供了一系列的指导,包括文件目录结构、系统模块说明、开发模式的配置、以及如何创建自定义路由、控制器和模板。 文件目录结构说明: - App/cache:用于存放系统缓存数据。 - App/...