duanbo19834
2016-08-03 16:55
浏览 97
已采纳

下载docx文件时出错

I am generating docx and download from server.

private static function downloadFile($fileDir)
{
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($fileDir));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($fileDir));
    readfile($fileDir);
}

This is save function. if I open file in the temporary dir from server, it works. But after download, I have error "The file is damaged" . I try to restore the file and afrer restoring all ok. Where is error?

图片转代码服务由CSDN问答提供 功能建议

我正在生成docx并从服务器下载。

  private  static function downloadFile($ fileDir)
 {
 header('Content-Description:File Transfer'); 
 header('Content-Type:application / octet-stream'); 
 header('Content-Disposition:  attachment; filename ='。basename($ fileDir)); 
 header('Content-Transfer-Encoding:binary'); 
 header('Expires:0'); 
 header('Cache-Control:必须 -  revalidate'); 
 header('Pragma:public'); 
 header('Content-Length:'。filesize($ fileDir)); 
 readfile($ fileDir); 
} 
    
 
 

这是保存功能。 如果我从服务器打开临时目录中的文件,它的工作原理。 但下载后,我有错误“文件已损坏”。 我尝试恢复文件,然后恢复所有确定。 哪里出错?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douxian6260 2016-08-03 17:01
    已采纳

    Before readfile($fileDir), try to run ob_clean() and flush() to clean (erase) and flush the output buffer.

    Quoting from PHP's manual about flush():

    flush() may not be able to override the buffering scheme of your web server and it has no effect on any client-side buffering in the browser. It also doesn't affect PHP's userspace output buffering mechanism. This means you will have to call both ob_flush() and flush() to flush the ob output buffers if you are using those.

    打赏 评论

相关推荐 更多相似问题