PHP通过header实现文本文件下载的代码


Posted in PHP onAugust 08, 2010

这就是今天讨论的主要问题。PHP帮助文档里面关于PHP通过header触发下载的说明比较简单,而网上关于此方面的文章也少的可怜,有很多文章都无法实现所需要的效果。今天我也来谈一下这个方面的话题,如果你感觉比网上的某些文章有所改进,那我就很知足了。

如果从准确的角度来说,那PHP文档是最准确的,因为它很简练的列出了实现文本类文件触发下载所需要的三条语句,以PDF为例就是:

// We'll be outputting a PDF 
header('Content-type: application/pdf'); 
// It will be called downloaded.pdf 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
// The PDF source is in original.pdf 
readfile('original.pdf');

这三句是正确的,但是在真正用的过程中很容易出现一些无法预料的问题,如果你是一个很仔细的人的话,也可以很容易的避免这些问题。而我不是,所以我就遇到了这样的问题,这里就以我的问题来简单说一下。

对于第一句,应该没啥说的,是必须的,只要改一下文档的类型就行,例如是下载txt文件,那就改为header(‘Content-type: application/txt');,第二句也没啥说的,就是为你的下载文档起一个名字,如果是txt文件的话,可以改为header(‘Content-Disposition: attachment; filename=”downloaded.txt”‘);,第三句的问题就比较多了,readfile这个函数的意思就是读取一个文件然后输出,这里文件的路径需要是真实的文件路径,如果是downloads文件夹下面的一个original.txt文件,可以这样写readfile(‘downloads/original.txt');,而如果提交的页面会输出文本等字符,那么下载到的文件会是原文件original.txt和提交的页面输出的文字的混合文件。我在这里就缺少了仔细的观察,一看下面不对就立即去查代码了,而没发现上面的文本就是我需要的内容,发现了这部分内容,你可能就很快想到怎么来解决这个问题了,也就是关闭提交到的页面的文本内容的输出。

到这里,我们的问题就解决了,从而也就实现了文本文件链接被点击的时候会触发下载对话框的效果。

PHP 相关文章推荐
php Undefined index的问题
Jun 01 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
记录PHP错误日志 display_errors与log_errors的区别
Oct 09 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php 基础函数
Feb 10 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
PHP调用接口API封装的例子
Oct 11 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 PHP
php下保存远程图片到本地的办法
Aug 08 #PHP
用PHP实现递归循环每一个目录
Aug 08 #PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 #PHP
PHP下对数组进行排序的函数
Aug 08 #PHP
PHP 冒泡排序算法的实现代码
Aug 08 #PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 #PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 #PHP
You might like
PHP实现的迷你漂流瓶
2015/07/29 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
javascript实现微信分享
2014/12/23 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python交互环境下实现输入代码
2018/06/22 Python
python读取LMDB中图像的方法
2018/07/02 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
有针对性的求职自荐信
2013/11/14 职场文书
银行贷款委托书范本
2014/10/11 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
学校重阳节活动总结
2015/03/24 职场文书
小学中队委竞选稿
2015/11/20 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
python内置模块之上下文管理contextlib
2022/06/14 Python