Php 强制下载仅显示在浏览器中,不显示';不提示下载
我似乎无法理解这一点,我知道这很简单。我正在构建一个非常基本的内容管理系统的后端。对于这个特定的部分,我只是尝试创建一个PHP链接,允许下载一个文件(客户的简历) 我的问题: 单击下载文件的链接时,浏览器不会提示您选择保存文件的本地目录,它只是在文档内容前后显示文件和一组符号(我假设这是要解密的应用程序打开和关闭文件的exif数据) 如何强制浏览器提示用户输入“另存为…”框Php 强制下载仅显示在浏览器中,不显示';不提示下载,php,content-management-system,download,Php,Content Management System,Download,我似乎无法理解这一点,我知道这很简单。我正在构建一个非常基本的内容管理系统的后端。对于这个特定的部分,我只是尝试创建一个PHP链接,允许下载一个文件(客户的简历) 我的问题: 单击下载文件的链接时,浏览器不会提示您选择保存文件的本地目录,它只是在文档内容前后显示文件和一组符号(我假设这是要解密的应用程序打开和关闭文件的exif数据) 如何强制浏览器提示用户输入“另存为…”框 非常感谢, Joshie我用于下载的标题: header("Pragma: public");
非常感谢,
Joshie我用于下载的标题:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$file);
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$bytes."");
我认为问题可能是PHP文件中的某个地方有一些空白,这导致头没有正确发送,因此您可以看到整个输出 我建议采取以下步骤:
?>
,这样就不会在文件末尾出现空行我对PHP也很陌生,如果你有任何其他加价建议,请告诉我!感谢以下几点-您可以尝试使用
CASE
开关,而不是多个IF
语句。另外,文件扩展名应该在if($file\u extension==pdf)
部分中加引号。@kkhugs我添加了大小写
,但是对于扩展名周围的引号,您是指它正在检查的变量周围吗?或者,如果正在检查的是静态值,那么它仍然会在浏览器中显示doc+exif,并且不会提示实际下载。您使用什么Web服务器?标题是否正确发送?(尝试在脚本ob_start()的顶部添加)。。。。对我来说,这个脚本很有效,只是测试了一下;在不使用mysql代码的情况下进行尝试,只需使脚本尽可能简单即可找到问题所在。
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$file);
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$bytes."");