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懒人函数 自动添加数据
Jun 28 PHP
php使用PDO方法详解
Dec 27 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
大家在抢红包,程序员在研究红包算法
Aug 31 PHP
apache和PHP如何整合在一起
Oct 12 PHP
合格的PHP程序员必备技能
Nov 13 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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+mysql一个名片库程序
2006/10/09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
nodeJS微信分享
2017/12/20 NodeJs
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
python 排列组合之itertools
2013/03/20 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
python模块之paramiko实例代码
2018/01/31 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
关于Python-faker的函数效果一览
2019/11/28 Python
tensorflow 变长序列存储实例
2020/01/20 Python
Python tornado上传文件的功能
2020/03/26 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
竞聘演讲稿范文
2014/01/12 职场文书
行政办公室岗位职责
2014/03/18 职场文书
项目经理任命书范本
2014/06/05 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫