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生成静态页的实现方法
May 10 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
php+iframe 实现上传文件功能示例
Mar 04 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
PHP经典面试题集锦
2015/03/19 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
jquery $("#variable") 循环改变variable的值示例
2014/02/23 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
js获取form的方法
2015/05/06 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
JS前端笔试题分析
2016/12/19 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
django解决订单并发问题【推荐】
2019/07/31 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
财务工作者先进事迹材料
2014/01/17 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
节约用电倡议书
2015/04/28 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
高中政治教学反思
2016/02/23 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers