PHP强制文件下载,而不是在新的选项卡/窗口中打开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP强制文件下载,而不是在新的选项卡/窗口中打开相关的知识,希望对你有一定的参考价值。

provide file via URL var, and script will grab it & force download. Take a look at code, and add some of your filetypes if required
  1. $file_name = $_GET['file'];
  2.  
  3. // make sure it's a file before doing anything!
  4. if(is_file($file_name))
  5. {
  6.  
  7. /*
  8.   Do any processing you'd like here:
  9.   1. Increment a counter
  10.   2. Do something with the DB
  11.   3. Check user permissions
  12.   4. Anything you want!
  13.   */
  14.  
  15. // required for IE
  16. if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); }
  17.  
  18. // get the file mime type using the file extension
  19. switch(strtolower(substr(strrchr($file_name,'.'),1)))
  20. {
  21. case 'pdf': $mime = 'application/pdf'; break;
  22. case 'zip': $mime = 'application/zip'; break;
  23. case 'jpeg':
  24. case 'jpg': $mime = 'image/jpg'; break;
  25. default: $mime = 'application/force-download';
  26. }
  27. header('Pragma: public'); // required
  28. header('Expires: 0'); // no cache
  29. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  30. header('Cache-Control: private',false);
  31. header('Content-Type: '.$mime);
  32. header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
  33. header('Content-Transfer-Encoding: binary');
  34. header('Content-Length: '.filesize($file_name)); // provide file size
  35. readfile($file_name); // push it out
  36. exit();
  37.  
  38. }

以上是关于PHP强制文件下载,而不是在新的选项卡/窗口中打开的主要内容,如果未能解决你的问题,请参考以下文章

window.open(url, windowname, opts) 在新选项卡中打开,而不是在 Firefox 中打开新窗口

在新选项卡/窗口中打开链接而不丢失当前 JSF 页面的视图范围

如何使Safari和IE下载图像而不是在新页面中打开?

Safari blob 下载影响表单提交 - 导致表单帖子被下载而不是在新选项卡中打开

JavaScript 在新窗口中打开,而不是选项卡

角度选项卡选择打开新页面而不是在同一页面中打开