>  기사  >  백엔드 개발  >  특정 유형의 파일을 강제로 다운로드하는 PHP 코드

특정 유형의 파일을 강제로 다운로드하는 PHP 코드

WBOY
WBOY원래의
2016-07-25 09:00:35972검색
  1. //提示下载
  2. //site http://bbs.it-home.org
  3. function downloadFile($file){
  4. /*Coded by Alessio Delmonti*/
  5. $file_name = $file;
  6. $mime = 'application/force-download';
  7. header('Pragma: public'); // required
  8. header('Expires: 0'); // no cache
  9. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  10. header('Cache-Control: private',false);
  11. header('Content-Type: '.$mime);
  12. header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
  13. header('Content-Transfer-Encoding: binary');
  14. header('Connection: close');
  15. readfile($file_name); // push it out
  16. exit();
  17. }
  18. ?>
复制代码

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

以txt类型为例

避免txt文件在浏览器中直接打开的方法,可以将txt文件改名为浏览器不认识的文件(比如rar),这样的话,由于浏览器不能识别rar类型的文件,只能让用户下载了。 以上办法,有时很不适用哦。

我们采用另外一种办法,通过php 文件头部header信息来设置文档的格式来实现点击下载的目的。 示例:

  1. //php header函数强掉下载
  2. // site bbs.it-home.org
  3. $filename = '/path/'.$_GET['file'].'.txt'; //文件路径
  4. header("Content-Type: application/force-download");
  5. header("Content-Disposition: attachment; filename=".basename($filename));
  6. readfile($filename);
  7. ?>
复制代码

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



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.