Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP下载.docx文件时出现损坏的文件错误_Php_Phpword - Fatal编程技术网

从PHP下载.docx文件时出现损坏的文件错误

从PHP下载.docx文件时出现损坏的文件错误,php,phpword,Php,Phpword,我在从Web服务器下载.docx文件时遇到了一个奇怪的问题。 当我试图打开下载的文档时,我收到一个损坏的文件错误 当我尝试手动(通过FileZilla)下载文件时,我能够毫无问题地打开它们 $targetFile = ASSETS . "/tmp/{$filename}.{$extension}"; ob_clean(); $phpWord->save($targetFile,$format,false); if(headers_sent()) { echo 'http head

我在从Web服务器下载.docx文件时遇到了一个奇怪的问题。 当我试图打开下载的文档时,我收到一个损坏的文件错误

当我尝试手动(通过FileZilla)下载文件时,我能够毫无问题地打开它们

$targetFile = ASSETS . "/tmp/{$filename}.{$extension}";
ob_clean();
$phpWord->save($targetFile,$format,false);

if(headers_sent())
{
    echo 'http header already sent';die();
}
else{
    if (!is_file($targetFile)) {
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
        echo 'File not found';die();
    } else if (!is_readable($targetFile)) {
        header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
        echo 'File not readable';die();
    } else {
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=".$filename.".".$extension."");
        header("Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
        header("Content-Transfer-Encoding: binary");
        header('Connection: Keep-Alive');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header("Content-Length: ".filesize($targetFile));

        set_time_limit(0);

        readfile($targetFile);

        exit();
   }
}
在localhost上运行代码也很有效,我可以毫无问题地打开文件

$targetFile = ASSETS . "/tmp/{$filename}.{$extension}";
ob_clean();
$phpWord->save($targetFile,$format,false);

if(headers_sent())
{
    echo 'http header already sent';die();
}
else{
    if (!is_file($targetFile)) {
        header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
        echo 'File not found';die();
    } else if (!is_readable($targetFile)) {
        header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
        echo 'File not readable';die();
    } else {
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=".$filename.".".$extension."");
        header("Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
        header("Content-Transfer-Encoding: binary");
        header('Connection: Keep-Alive');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header("Content-Length: ".filesize($targetFile));

        set_time_limit(0);

        readfile($targetFile);

        exit();
   }
}
我观察到的一件事是,当我通过代码下载时,下载的文档缺少1KB的大小,因此我假设缺少一些内容,但似乎找不到问题

我可以看到很多人都有类似的问题,我尝试了针对这些问题提出的解决方案,但运气不佳

有什么想法吗