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的特殊设置
Oct 09 PHP
PHP 截取字符串专题集合
Aug 19 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
php class类的用法详细总结
Oct 17 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
Yii框架中memcache用法实例
Dec 03 PHP
php实现短信发送代码
Jul 05 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
laravel http 自定义公共验证和响应的方法
Sep 29 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 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实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python生成器以及应用实例解析
2018/02/08 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
小学毕业演讲稿
2014/04/25 职场文书
计算机实训报告总结
2014/11/05 职场文书
计划生育目标责任书
2015/05/09 职场文书
古诗之感恩老师
2019/10/24 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript