从PHP下载.docx文件时出现损坏的文件错误
我在从Web服务器下载.docx文件时遇到了一个奇怪的问题。 当我试图打开下载的文档时,我收到一个损坏的文件错误 当我尝试手动(通过FileZilla)下载文件时,我能够毫无问题地打开它们从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
$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的大小,因此我假设缺少一些内容,但似乎找不到问题
我可以看到很多人都有类似的问题,我尝试了针对这些问题提出的解决方案,但运气不佳
有什么想法吗