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
基于mysql的论坛(3)
Oct 09 PHP
php at(@)符号的用法简介
Jul 11 PHP
php Memcache 中实现消息队列
Nov 24 PHP
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
php绘制一条直线的方法
Jan 24 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
Yii多表联合查询操作详解
Jun 02 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
js函数般调用正则
2008/04/08 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
解密Python中的描述符(descriptor)
2015/06/03 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
windows下python安装pip方法详解
2020/02/10 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
初中女生自我鉴定
2013/12/19 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
英语读书笔记
2015/07/02 职场文书
寒假致家长的一封信
2015/10/10 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python