2011-10-13 10 views
0

1バイトのデータに問題が発生しました。サーバーからダウンロードするとうまく開きますが、強制的にWebからダウンロードすると、ファイルは1バイト大きくなり破損します。私は "余分な"スペースのために顔が青くなるまで見ました。 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

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

関連する問題