我遇到的问题是一个字节的数据损坏了我的word文档。当我从服务器下载时它打开很好,但是当我强制从web下载时,文件大一个字节并且已损坏。我一直看着,直到我脸上的蓝色为“额外”的空间。
在Windows上奇怪的是,如果我点击恢复文件就好了......
public function DownloadDocx()
{
$this->_extension = "docx";
$args = func_get_args();
$newName = trim($args[0]);
ob_flush();
if (!empty($newName)) {
$fileName =$_SERVER['DOCUMENT_ROOT'] . '/wills/docs/' .$newName;
} else {
throw new Exception("Invalid document name");
}
if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false) {
header("Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
header("Content-Disposition: inline; filename=\"". $newName . '.' . $this->_extension."\"");
header("Content-Length: ".filesize($fileName . '.' . $this->_extension));
} else {
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=\"". $newName . '.' . $this->_extension."\"");
header("Content-Length: ".filesize($fileName . '.' . $this->_extension));
}
header("Expires: Fri, 01 Jan 2010 05:00:00 GMT");
if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false) {
header("Cache-Control: no-cache");
header("Pragma: no-cache");
}
readfile($fileName . '.' . $this->_extension);
}
答案 0 :(得分:0)
长期以来,这类问题的最常见原因是<?php
之前或?>
之后的空白字符。
请注意,您可能实际上不需要在纯PHP代码的文件中关闭?>
,这有助于避免此问题。
答案 1 :(得分:0)
readfile($fileName . '.' . $this->_extension);
后添加exit;
。
如果问题仍然存在,请尝试在函数die( '.' );
的开头添加,运行脚本并查看页面源,如果点(。)是第一个字符。