Maison >développement back-end >tutoriel php >php强制下载指定类型文件的代码

php强制下载指定类型文件的代码

WBOY
WBOYoriginal
2016-07-25 09:00:351002parcourir
  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文件的下载。



Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn