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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
PHP 和 MySQL 基础教程(三)
Oct 09 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
php经典算法集锦
Nov 14 PHP
smarty模板数学运算示例
Dec 11 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php时间戳转换代码详解
Aug 04 PHP
Laravel ORM 数据model操作教程
Oct 21 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生成自己的LOG文件
2006/10/09 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
使用python制作一个解压缩软件
2019/11/13 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
python中remove函数的踩坑记录
2021/01/04 Python
python 制作磁力搜索工具
2021/03/04 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
数百万免费的图形资源:Freepik
2020/09/21 全球购物
爱心助学感谢信
2015/01/21 职场文书
协议书范文
2015/01/27 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书