Php 强制在所有浏览器中保存文件-不在浏览器窗口中打开
我想要一个在所有浏览器中都能工作的简单解决方案 对于特定的文件类型,或通过类的目标链接:如何让它们在所有主要浏览器中强制下载 我认为我找到了apachce服务器的完美解决方案——将其添加到.htaccess中 似乎可以在Firefox和Safari中使用,但不能在chrome或IE中使用(没有测试过其他任何东西) 有谁能帮我找到一个解决方案,告诉我如何为所有浏览器创建链接以强制下载文件,而不是在浏览器中打开 我似乎找不到一个完全支持浏览器的解决方案。不可能吗 任何指向教程或代码片段的链接都非常棒 如果我的网站基于PHP,那么如果可行的话,它可以与PHP一起工作Php 强制在所有浏览器中保存文件-不在浏览器窗口中打开,php,download,Php,Download,我想要一个在所有浏览器中都能工作的简单解决方案 对于特定的文件类型,或通过类的目标链接:如何让它们在所有主要浏览器中强制下载 我认为我找到了apachce服务器的完美解决方案——将其添加到.htaccess中 似乎可以在Firefox和Safari中使用,但不能在chrome或IE中使用(没有测试过其他任何东西) 有谁能帮我找到一个解决方案,告诉我如何为所有浏览器创建链接以强制下载文件,而不是在浏览器中打开 我似乎找不到一个完全支持浏览器的解决方案。不可能吗 任何指向教程或代码片段的链接都非常
谢谢将内容处置标题设置为“附件”,如下所示(在PHP中): 您甚至可以为下载建议一个文件名(如果它与URL中给出的文件名不同): 如果要直接在Apache服务器中执行此操作,请尝试以下操作:
<FilesMatch "\.(pdf|csv|xls)">
Header set Content-Disposition attachment
</FilesMatch>
标题集内容处置附件
(您可以在FileMatch模式中添加更多扩展名)
如果可以,请尽量避免使用应用程序/八位字节流头,也就是说,如果没有它,内容处置工作正常。这是因为有些系统实际上会注意内容类型,并将其与文件一起保存。如果用户的系统能够找出文件的正确MIME类型,通常对用户来说会更好。假设
$file
保存了文件的路径,我经常使用一个脚本来执行此操作:
$file = 'file.gif'; // example
$filesize=filesize($file);
if ($filesize > 0) {
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: image/gif");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=\"".basename($file)."\";" );
readfile($file);
}
对于没有文件结构的设备(如iPad/iPhone),您确实会遇到问题,但您可以删除内容处置行来解决问题。
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
ForceType应用程序/八位组流
标题集内容处置附件
将此项添加到.htaccess(将pdf更改为您想要的格式)--这项功能目前在我测试过的所有浏览器(尚未测试opera或safari)中都可以使用。您好,谢谢您的帮助。我正在将此添加到我的wordpress网站。在我的single-download.php模板上(这是我希望强制下载的地方),我将您的行添加到模板中,如下所示<代码>但似乎没有效果?谢谢确保在将任何内容输出到浏览器之前运行所有header()调用。如果get_header()函数输出任何内容,请将header()调用放在前面。谢谢,您的答案看起来非常有趣。我想我可以在wordpress上的一个基本循环中轻松实现这一点,但我的PHP知识非常基础。我正试图通过galley短代码让它工作<代码>do_短代码('[gallery customgal=“true”]')代码>由此自定义库函数生成…-我想强制下载的$fullsize_image变量,用于第108行。任何指点都将不胜感激,谢谢。乔希
<FilesMatch "\.(pdf|csv|xls)">
Header set Content-Disposition attachment
</FilesMatch>
$file = 'file.gif'; // example
$filesize=filesize($file);
if ($filesize > 0) {
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: image/gif");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=\"".basename($file)."\";" );
readfile($file);
}
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>