2012-05-08 11 views
0

私はダウンロードしたファイルを追跡するドキュメントダウンロードサイトを持っています。PHP force headerのダウンロードがzipファイルで動作しない

私の問題は、使用しているスクリプトでダウンロードするZIPファイルが取得されていることです。他のすべてのファイルは、zipファイルとは別にダウンロードされます。 zipファイルがプッシュされると、download.phpページに移動します。このページでは、ファイルがプッシュアウトされていません。ここで

  ob_start(); 
    header('Content-Description: File Transfer'); 
      header('Content-Type: application/octet-stream'); 
      header('Content-Disposition: attachment; filename='.basename($file)); 
      header('Content-Transfer-Encoding: binary'); 
      header('Expires: 0'); 
      header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
      header('Pragma: public'); 
      header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
      flush(); 
      readfile($file); 
      exit; 
+1

あなたが設定したばかりのヘッダーを 'ob_clean'で破棄しませんか? – bfavaretto

+0

あなたはどんな種類のサーバーを持っていますか? –

+0

とどのブラウザを試しましたか? 1つまたは複数の? – Anton

答えて

0

は私のために動作するコードスニペットです:

if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { 
    header('Content-Type: "application/octet-stream"'); 
    header('Content-Disposition: attachment; filename="'.basename($file_url).'"'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header("Content-Transfer-Encoding: binary"); 
    header('Pragma: public'); 
    header("Content-Length: ".filesize($file_url)); 
} else { 
    header('Content-Type: "application/octet-stream"'); 
    header('Content-Disposition: attachment; filename="'.basename($file_url).'"'); 
    header("Content-Transfer-Encoding: binary"); 
    header('Expires: 0'); 
    header('Pragma: no-cache'); 
    header("Content-Length: ".filesize($file_url)); 
} 
readfile($file_url); 
+0

これはfirefoxとieの両方にあります。これは私のローカルホスト上で動作しますが、それは私のライブサーバ(Apacheを実行している共有ホスティング)であると思う私の生産サーバではありません – Jeff

+0

それは全くダウンロードを開始しますか?任意のエラー? –

+0

エラーはありません、またダウンロードすることはありません。 sriptがどこにあり、空のページを表示しているのかを調べるだけです。前述のように、ローカルホスト上で動作します。 – Jeff

0

が同様の問題を抱えていた、この引用符は、その時間を助けた:

header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
0

私はコンテンツのためbase_nameを使用していませんでした私は完全なパスを持っていました。使用してbase_name私のために働いた。

関連する問題