在 php 中下载 Word 文档时出错



我有一个word文档,我希望用户从网站上的链接下载。

代码在我的本地主机上工作正常。但是,当我在服务器上上传网站时,它不是提供在本地机器上保存的选项,而是在浏览器本身中打开。以下是我的代码:

// Define the path to file
    $file = <filepath>;
    if(!file_exists($file))
    {
        die('Hard Copy does not exist on Server at the moment . Sorry for the inconvinience');
    }
    else
    {
    // required for IE, otherwise Content-Disposition may be ignored
        if(ini_get('zlib.output_compression'))
        ini_set('zlib.output_compression', 'Off');
        ob_clean();
        // Set headers
        header("Cache-Control: private");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Type: application/msword");
        header("Content-Transfer-Encoding: binary");
        readfile($file);
    }

现在,据我了解,如果我将内容处置作为附件,它应该会提示保存文件。

另外,我在我的.htaccess文件中添加了"AddType msword .doc"。它仍然给出相同的结果.

服务器上是否需要进行任何其他设置?

基于此: 如何防止在Internet Explorer中缓存 我建议您添加以下内容

header("Expires: Mon, 26 Jul 1997 05:00:00 GMTn");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header(sprintf("Content-Length: %d;n"),filesize($file));

您还可以添加

header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate"); 

除此之外..你的代码从这里工作正常:

尝试添加:

header('Expires: 0');
header('Content-Length: ' . filesize($file));
header('Content-Type: application/octet-stream');

编辑

但是,它按照您的代码的预期在我的两个不同的测试服务器上工作,所以我认为这是一个服务器配置问题,而不是 PHP 代码级问题。

相关内容

  • 没有找到相关文章

最新更新