2016-05-18 8 views
1

私はこのコードでpdfファイルを正常にダウンロードしています。私は同じコードを使って、exeを含むzipファイルをダウンロードしています(ファイル名を変更し、MIMEタイプをapplication/zipに変更します)。ダウンロードしたファイルを開こうとするとこのエラーが発生します。 " 圧縮されたフォルダ '[filename]'が無効です"phpダウンロードコードはpdfで動作しますが、zipではありません

オリジナルの圧縮されていないファイルが実行されていることを確認しました。また、ノートブックのフォルダを解凍してexe 。

また、私のウェブサイトからFilezillaを介してzipファイルを一時フォルダにダウンロードし、解凍して実行してアップロードに問題がないことを確認しました。

これは70 MBのファイルなので、65 KBの圧縮されたEXE ---同じエラーをダウンロードしようとしました。

私はヘッダ( "Content-Length:"。$ file_size)を追加しましたが、pdfsはそれがなくてもうまくダウンロードできました---同じエラーです。

私はアプリケーション/オクテットストリーム---同じエラーを試みました。

アイデア?任意の提案が高く評価されました。

$file_size = filesize($file_path); 
$file = @fopen($file_path,"r"); 
if ($file) 
{ 
    header("Pragma: public"); 
    header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); 
    header("Content-Disposition: attachment; filename=\"$file_name\""); 
    //header("Content-Length: " . $file_size); 
    header("Content-Type: " . $ctype); 


    set_time_limit(0); 
    fseek($file, 0); 

    while(!feof($file)) 
    { 
     print(@fread($file, 1024*8)); 
     ob_flush(); 
     flush(); 
     if (connection_status()!=0) 
     { 
      @fclose($file); 
      exit; 
     }   
    } 
    @fclose($file); 
} 
+0

あなたはどのようなOSを使用していますか? Windows XP?どのようなプロトコルですか? httpまたはhttps? –

+0

と、なぜあなたはチャンクされたジップフライを読んでいるのですか?タスクをreadfile($ zipfile)することはできませんか? –

+0

Windows 7 Professional、http – jana

答えて

0

php_execution_timeが低くなることがあり、ジップがダウンロードされる前に異常終了することがあります。 ジップのサイズがサーバー上のサイズと同じであることを確認します。

またはApacheでmod_xsendfileを活性化し、ヘッダーを設定:

header("X-Sendfile: $filename"); 
+0

サーバー上のファイルのサイズは71,612,221です。ダウンロードしたファイルは71,612,427です。それは何を意味するのでしょうか? – jana

関連する問題