- 1. phpMyAdmin(支持对数据库进行建立、复制,删除数据等...
- 2. QuickPHP V1.12.1(php脚本调试工具) 绿色免费版
- 3. 维棠FLV视频下载软件(支持同时多个视频文件下载功能...
- 4. phpMyAdmin(支持对数据库进行完全操控) V3.4.2.0 F...
- 5. phpMyAdmin(通过互联网控制操作MYSQL的软件) V3.4....
- 6. phpMyAdmin 3.4.0 RC2 多语绿色版_很方便的网络远M...
- 7. 音乐文件下载者Twister V2.2.9 英文破解版
- 8. 基于PHP和MySql的个人文章发布/管理平台Swan v1.0.0
- 9. 强大的PHP在线购物系统Avactis购物车系统 V2.1
- 10. 教你如何更好地与上司沟通这样和上司说话 PDF电子书
教你php如何利用header实现文件下载
作者: 来源: 发布时间:2011-5-21 9:47:20 点击:
本文章提供给各位学习分享,是关于教你PHP如何使用header实现文件下载,希望对各位有所帮助。
php中要怎么样利用header实现文件下载呢?
在PHP帮助文档里面关于PHP通过header触发下载的说明比较简单,而网上对这方面说明的也很少,很多文章都无法实现我们所需要的效果。
下面以PDF文件格式为例进行说明:
<?php
// 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通过header触发下载的说明比较简单,而网上对这方面说明的也很少,很多文章都无法实现我们所需要的效果。
下面以PDF文件格式为例进行说明:
<?php
// 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实现ping命令的小技巧 下一篇: php数组输出的三个小方案
[收藏此文章]