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 从数据库提取二进制图片的处理代码
Sep 09 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
php创建sprite
Feb 11 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
Laravel5权限管理方法详解
Jul 26 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
php输出图像的方法实例分析
Feb 16 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
php实现算术验证码功能
Dec 05 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脚本的10个技巧(6)
2006/10/09 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
python读取Android permission文件
2013/11/01 Python
Python程序设计入门(4)模块和包
2014/06/16 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python字符串的修改方法实例
2019/12/19 Python
jupyter notebook清除输出方式
2020/04/10 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
shell程序中如何注释
2012/02/17 面试题
港湾网络笔试题
2014/04/19 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
如何定义一个可复用的服务
2014/09/30 面试题
集体婚礼证婚词
2014/01/13 职场文书
学生操行评语大全
2014/04/24 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
个人委托书范本汇总
2014/10/01 职场文书
家长评语怎么写
2014/12/30 职场文书
贷款承诺书
2015/01/20 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript