2011-10-13 6 views
0

1 바이트의 데이터로 인해 내 워드 문서가 손상됩니다. 서버에서 다운로드 할 때 잘 열리지 만 웹에서 강제로 다운로드하면 파일이 1 바이트 크고 손상됩니다. Ive는 내가 "여분의"공간을 위해 얼굴에서 푸른 색 일 때까지 보았다. 창문에 이상하게출력 스트림에서 공백으로 인해 문서가 손상됩니다.

, 나는이 문서가 잘 나오는 복구를 클릭하면 .... 길고 긴 방법으로 문제가 이런 종류의

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

readfile($fileName . '.' . $this->_extension); 이후에 exit;을 더합니다.

문제가 지속되면 함수 die('.');의 시작 부분에 추가를 시도하고 스크립트를 실행하고 점 (.)이 첫 번째 문자 인 경우 페이지 소스를 확인하십시오.

+0

Nah의 공간 ... 나는 소스에서 볼 수 있는데, 내 인생에서 찾을 수 있습니다. . – Blake

+0

이것은 해결되었습니다. 나는 처음에는 죽을 때부터 시작하여 바닥으로갔습니다. 도움을 주셔서 감사합니다. – Blake

0

가장 일반적인 원인은 <?php 또는 후에 전에 공백 문자 ?>.

실제로이 문제를 방지하는 데 도움이되는 순수 PHP 코드 파일에 ?>을 닫지 않아도됩니다.

+0

예, 확인했습니다. 그 어딘가에 부끄럽고 작은 성격. – Blake

+0

해결되었습니다. 나는 막 죽을 때부터 시작하여 바닥으로 갔다. 도움을 주셔서 감사합니다 – Blake

+0

어디서나'include()'/'require()'를 호출 했습니까? 그 파일들을 체크하는 것을 잊지 마라. 기본적으로'echo' 나'print'를 명시 적으로 호출하거나''밖의 문자를 사용하면 기본적으로 * 유일하게 * 단일 문자가 출력된다. 태그. 그러므로'echo'/'print'를 위해 스크립트에서 사용하는 모든 소스 코드 파일을 검색하고 * 모든 * 파일의 태그를 검사하십시오 (include/require도 함께 검색하십시오. 스크립트에서'eval'에 대한 모든 호출은 태그 밖의 여분의 문자와 동일한 결과를 가져올 수 있습니다 ... – DaveRandom

관련 문제