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 相关文章推荐
让你同时上传 1000 个文件 (二)
Oct 09 PHP
由php if 想到的些问题
Mar 22 PHP
PHP Document 代码注释规范
Apr 13 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
php中钩子(hook)的原理与简单应用demo示例
Sep 03 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 array_flip() 删除数组重复元素
2009/01/14 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
Python实现excel转sqlite的方法
2017/07/17 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
俄语专业职业生涯规划
2014/02/26 职场文书
访谈节目策划方案
2014/05/15 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
Nginx配置https的实现
2021/11/27 Servers
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang