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执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
thinkphp 验证码 的使用小结
May 07 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
Laravel 集成 Geetest验证码的方法
May 14 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
js中的 || 与 && 运算符详解
2018/05/24 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
JavaScript如何操作css
2020/10/24 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python多继承顺序实例分析
2018/05/26 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
Python算法中的时间复杂度问题
2019/11/19 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server