2011-07-11 7 views
0

私はデジタル製品を販売しており、ダウンロードの実際の場所を隠したいと思っています。ダウンロードファイルの場所を非表示にします。 - リダイレクトダウンロード

だから私はこのようにリダイレクトスクリプトを使用しています:

protected function redirectDownload ($realfilename) { 
    ob_start(); 
    $mm_type="application/octet-stream"; 

    header("Cache-Control: public, must-revalidate"); 
    header("Pragma: no-cache"); 
    header("Content-Type: " . $mm_type); 
    header("Content-Length: " .(string)(filesize($realfilename))); 
    header('Content-Disposition: attachment; filename="'.$this->fakefilename.'"'); 
    header("Content-Transfer-Encoding: binary\n"); 

    ob_end_clean(); 
    readfile($realfilename); 
} 

私はそれをダウンロードする際にzipファイルには、常に破損しているが、私は直接それをダウンロードするとき、それは大丈夫です。

これは誰でも知っていますか?

これは別のサーバーで問題なく動作していたと思いますが、確認する必要があります。

私がこれを解決できない場合、これを行うために使用できる他のテクニックやサービスはありますか?

+2

ここで、ob_start()とob_end_clean()のポイントは何ですか?その間に何の出力もないようです。 – awm

答えて

2

ダウンロードした(破損した)ファイルをテキストエディタで開くと、関数を呼び出す前に既に出力があったと思います。
関数の先頭ではなく、スクリプトの先頭にob_start()を使用することをお勧めします。

関連する問題