PHP下载文件
讲完了《文件上传》,接下来讲一下 PHP 中如何下载文件。简单的文件下载只需要使用 HTML 的链接标记
为了避免要下载的文件直接在浏览器中输出,我们可以向浏览器发送一个头信息,用来通知浏览器进行下载文件的处理。在 PHP 中可以使用 header() 函数发送网页的头部信息给浏览器,该函数接受一个头信息的字符串作为参数,其语法格式如下:
要实现文件下载需要调用三次 header() 函数,下面是以下载图片 logo.jpg 为例,需要发送的头信息的代码如下所示:
头部信息中需要一些文件的属性信息,可以使用 PHP 中提供的函数来获取。设置完头部信息以后,需要将文件的内容输出到浏览器,以便进行下载。可以使用 PHP 中的文件系统函数将文件内容读取出来后,直接输出给浏览器。最方便的是使用 readfile() 函数,将文件内容读取出来并直接输出。
【示例】以下载图片 logo.jpg 为例,实现代码如下所示:
<a>
,并将 href 属性的值指定为要下载的文件路径即可,如下所示:<a href="https://www.xinbaoku.com/php/logo.zip">下载文件<a>
通过上面的方法实现文件下载的话,只能处理一些浏览器不能识别的类型文件,例如上面示例中用到的 zip 压缩文件,浏览器不能直接打开,所以会弹出一个下载提示,但如果将链接后面的文件改成后缀名为.html的网页文件、图片文件或者 PHP 程序脚本文件的话,使用这种链接形式,则会将文件内容直接输出到浏览器中,并不会提示用户下载。为了避免要下载的文件直接在浏览器中输出,我们可以向浏览器发送一个头信息,用来通知浏览器进行下载文件的处理。在 PHP 中可以使用 header() 函数发送网页的头部信息给浏览器,该函数接受一个头信息的字符串作为参数,其语法格式如下:
header(string $string[, bool $replace = true[, int $http_response_code]])
其中,$string 就是头信息的字符串;$replace 为可选参数,用来设置是否使用后面的头信息替换前面相同类型的头信息,默认为 true;$http_response_code 为可选参数,用来强制指定 HTTP 响应的值。要实现文件下载需要调用三次 header() 函数,下面是以下载图片 logo.jpg 为例,需要发送的头信息的代码如下所示:
header('Content-type:image/jpg'); // 发送指定文件 MIME 类型的头信息
header('Content-Disposition:attachment;filename="logo.jpg"'); // 发送描述文件的头信息,附件和文件名
header('Content-Length:3390'); // 发送指定文件大小的信息,单位是字节
头部信息中需要一些文件的属性信息,可以使用 PHP 中提供的函数来获取。设置完头部信息以后,需要将文件的内容输出到浏览器,以便进行下载。可以使用 PHP 中的文件系统函数将文件内容读取出来后,直接输出给浏览器。最方便的是使用 readfile() 函数,将文件内容读取出来并直接输出。
【示例】以下载图片 logo.jpg 为例,实现代码如下所示:
<?php $file = 'logo.jpg'; header('Content-type:image/jpg'); // 发送指定文件 MIME 类型的头信息 header('Content-Disposition:attachment;filename="'.$file.'"'); // 发送描述文件的头信息,附件和文件名 header('Content-Length:'.filesize($file)); // 发送指定文件大小的信息,单位是字节 readfile($file); ?>运行上面的代码即可将 logo.jpg 下载到本地。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算