从PHP下载时,.docx文件上的文件错误已损坏

时间:2017-03-13 14:21:26

标签: php phpword

我从网络服务器下载的.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上运行代码也可以,我可以毫无问题地打开文件。

我观察到的一件事是,当我通过我的代码下载时,下载的文档大小不足1 kb,因此我假设某些内容丢失,但似乎无法找到问题。

我可以看到许多人有类似的问题,我尝试了那些建议的解决方案,但没有运气。

有什么想法吗?

0 个答案:

没有答案