PHP通过header实现文本文件下载的代码_php技巧

这就是今天讨论的主要问题。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和提交的页面输出的文字的混合文件。我在这里就缺少了仔细的观察,一看下面不对就立即去查代码了,而没发现上面的文本就是我需要的内容,发现了这部分内容,你可能就很快想到怎么来解决这个问题了,也就是关闭提交到的页面的文本内容的输出。

到这里,我们的问题就解决了,从而也就实现了文本文件链接被点击的时候会触发下载对话框的效果。

时间: 2024-08-17 17:28:45

PHP通过header实现文本文件下载的代码_php技巧的相关文章

让PHP更快的提供文件下载的代码_php技巧

但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载. 复制代码 代码如下: <?php $file = "/tmp/dummy.tar.gz"; header("Content-type: application/octet-stream"); header('Content-Disposition: attachment; filename="' . basename

Php header()函数语法及使用代码_php技巧

语法: 复制代码 代码如下: Void header(string $string[,bool $replace=true [, int $http_response_code) 向客户端发送原始的HTTP报头需注意:Header函数必须在任何实际的输出前调用,无论是一般的html标签.文件中空行,或者来自php.就是在这个函数之前不能有任何形式的输出.参数说明: 参数 描述string 必需.规定要发送的报头字符串.replace 可选.指示该报头是否替换之前的报头,或添加第二个报头.默认是

关于php支持分块与断点续传文件下载功能代码_php技巧

本文章要介绍了这篇文章是一篇关于php流下载,就是可以支持分块与断点续传文件下载,有需要的朋友可以看看.代码如下 复制代码 代码如下: $dowmFile = dirname ( __FILE__ ) . '/Nokia – Always Here.mp3′; //要下载的文件,绝对或相对 $dowmName = 'Nokia – Always Here.mp3′; ob_start (); getlocalfile ( $dowmFile, $dowmName ); flush (); ob_

PHP将HTML转换成文本的实现代码_php技巧

核心代码: <?php // $document 应包含一个 HTML 文档. // 本例将去掉 HTML 标记,javascript 代码 // 和空白字符.还会将一些通用的 // HTML 实体转换成相应的文本. $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript "'<[\/\!]*?[^<>]*?>'si", //

Search File Contents PHP 搜索目录文本内容的代码_php技巧

这个类可以用来搜索在给定的文本目录中的文件. 它可以给定目录遍历递归查找某些文件扩展名的文件. 并打开找到的文件,并检查他们是否包含搜索词语. 它返回一个含有所有文件的列表包含搜索词语数组. 复制代码 代码如下: <?php /* Class for searching the contents of all the files in a directory and its subdirectories For support please visit http://www.webdigity.

用header 发送cookie的php代码_php技巧

用header 发送cookie  header("Set-Cookie: testcookie=中文; path=/; domain=.phpv.net; expires=".gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT",time()+9600));  请将path=/; domain=.phpv.net;改为自己的(不知道怎么设就删除它们]   

PHP 写文本日志实现代码_php技巧

复制代码 代码如下: ** * 写文件 * @param string $file 文件路径 * @param string $str 写入内容 * @param char $mode 写入模式 */ function writeFile($file,$str,$mode='w') { $oldmask = @umask(0); $fp = @fopen($file,$mode); @flock($fp, 3); if(!$fp) { Return false; } else { @fwrite

php发送html格式文本邮件的方法_php技巧

本文实例讲述了php发送html格式文本邮件的方法.分享给大家供大家参考.具体实现方法如下: <?php $to = "simon@mailexample.com, elaine@mailexample.com"; //设置收件人 $subject = "This is a test"; //设置E-mail主题 //设置E-mail内容: $message = " <html> <head> <title>Thi

PHP 模拟$_PUT实现代码_php技巧

PHP里有$_GET,$_POST,但是没有$_PUT,所以如果需要使用它的话,则你不得不自己模拟一下: 复制代码 代码如下: $_PUT = array(); if ('PUT' == $_SERVER['REQUEST_METHOD']) { parse_str(file_get_contents('php://input'), $_PUT); } 通过php://input得到的数据是raw data,所以需要用parse_str解析一下. 不过需要说明的是,当表单是enctype="mu