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 相关文章推荐
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
深入apache host的配置详解
Jun 09 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php解析url的三个示例
Jan 20 PHP
php不写闭合标签的好处
Mar 04 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
php四种定界符详解
Feb 16 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 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遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
用JS写的一个TableView控件代码
2010/01/23 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
医学生职业生涯规划书范文
2014/03/13 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis