php强制下载类型的实现代码

yipeiwu_com6年前PHP代码库
复制代码 代码如下:

function downloadFile($file){
/*Coded by Alessio Delmonti*/        
        $file_name = $file;
        $mime = 'application/force-download';
        header('Pragma: public');       // required
        header('Expires: 0');           // no cache
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Cache-Control: private',false);
        header('Content-Type: '.$mime);
        header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
        header('Content-Transfer-Encoding: binary');
        header('Connection: close');
        readfile($file_name);           // push it out
        exit();
}

php将文件下载下来而不是超链接下载,这样可以减少盗链的情况!将文件给浏览器让浏览器下载

以txt类型为例

由于现在的浏览器已经可以识别txt文档格式,如果只给txt文档做一个文字链接的话,点击后只是打开一个新窗口显示txt文件的内容,并不能实现点击下载的目的。当然这个问题的解决办法也可以是将txt文件改名为浏览器不认识的文件(比如rar),这样的话,由于浏览器不能识别rar类型的文件,只能让用户下载了。还有一种办法,就是利用代码通过header设置文档的格式来实现点击下载的目的。
PHP代码如下:
复制代码 代码如下:

$filename = '/path/'.$_GET['file'].'.txt'; //文件路径
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
readfile($filename);

简要说明:
第一个header函数设置Content-Type的值为application/force-download;
第二个header函数设置要下载的文件。注意这里的filename是不包含路径的文件名,filename的值将来就是点击下载后弹出对话框里面的文件名,如果带路径的话,弹出对话框的文件名就是未知的;
最后通过readfile函数,将文件流输出到浏览器,这样就实现了txt文件的下载。

相关文章

php实现数据库的增删改查

php实现数据库的增删改查

1.查询: 数据的显示,这里就可以嵌入php来进行数据的输出 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona...

ThinkPHP使用心得分享-上传类UploadFile的使用

上传类的使用很简单,如果是第一次使用上传功能的朋友需要注意的是html提交表单中的表单属性要加上 enctype属性,如: 复制代码 代码如下: <form method...

php文件上传表单摘自drupal的代码

drupal文件上传表单的例子 复制代码 代码如下: function upload_form() { $form = array(); // If this #attribute is...

简单采集了yahoo的一些数据

以前在公司就写过类似的东西,这次是帮以前的上司写了一个简单的采集程序。    很简单的。。汗。没什么技术含量的。    数据来源:http://c...

php基础知识:函数基础知识

函数,所有的语言都有,所以这里只说重点: 1>定义:php不需要定义返回值类型。 2>函数名是非大小写敏感的,不过在调用函数的时候,通常使用其在定义时相同的形式。 ...