Php 强制下载仅显示在浏览器中,不显示';不提示下载

Php 强制下载仅显示在浏览器中,不显示';不提示下载,php,content-management-system,download,Php,Content Management System,Download,我似乎无法理解这一点,我知道这很简单。我正在构建一个非常基本的内容管理系统的后端。对于这个特定的部分,我只是尝试创建一个PHP链接,允许下载一个文件(客户的简历) 我的问题: 单击下载文件的链接时,浏览器不会提示您选择保存文件的本地目录,它只是在文档内容前后显示文件和一组符号(我假设这是要解密的应用程序打开和关闭文件的exif数据) 如何强制浏览器提示用户输入“另存为…”框 非常感谢, Joshie我用于下载的标题: header("Pragma: public");

我似乎无法理解这一点,我知道这很简单。我正在构建一个非常基本的内容管理系统的后端。对于这个特定的部分,我只是尝试创建一个PHP链接,允许下载一个文件(客户的简历)

我的问题:

单击下载文件的链接时,浏览器不会提示您选择保存文件的本地目录,它只是在文档内容前后显示文件和一组符号(我假设这是要解密的应用程序打开和关闭文件的exif数据)

如何强制浏览器提示用户输入“另存为…”框


非常感谢,


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文件中的某个地方有一些空白,这导致头没有正确发送,因此您可以看到整个输出

我建议采取以下步骤:

  • 检查“connect.php”,在文件的开头/结尾查找空行/空格,并将其删除

  • 通过这种方式调整php文件,在文件末尾省略结尾标记
    ?>
    ,这样就不会在文件末尾出现空行

  • 如果以上内容还不够,您需要检查apache和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."");