5

このスクリプトを使用してファイルをダウンロードすると、ダウンロード中に合計サイズと速度が表示されません...「直接ダウンロードリンク」のように見せたいです。このスクリプトの目的は、直接ダウンロードリンクを非表示にして、直接ダウンロードやボットなどの他のダウンロード動作を制限することです。mediafire、rapidshare、megauploadなどを考えてみてください。

現在使用しているスクリプトは機能しますが、通常のダウンロードリンクからダウンロードしたときの表示方法としては表示されません。何が起こっているかのスクリーンショットを投稿します。
ここに画像の説明を入力してください

私はインターネットを何時間も検索していて、これに対する解決策を見つけることができないように見えるので、このスクリーンショットが役立つことを願っています:(。

if (isset($_GET['file'])){
   $file = $_GET['file'];
   $path = '/home/user/domains/domain.com/files/upload/';
   $filepath = $path.$file;

   if (file_exists($filepath)){

    set_time_limit(0); // for slow connections

    header('Content-Description: File Transfer');
    header("Content-Disposition: attachment; filename=\"$file\"");
    header('Content-Type: application/octet-stream');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($filepath));
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Expires: 0');

    readfile($filepath); // send file to client 
   } 
   else{
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); 
   }
  }else{
   header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404); 
  }
4

2 に答える 2

2

コンテンツはmod_deflateまたは同様のものを使用してサーバーレベルで圧縮されていますか?

これはここで答えられました: PHPダウンロードスクリプトで正しいファイルサイズを送信する

「Zlibやmod_deflateなどを使用してファイルを圧縮すると、Content-Lengthヘッダーが正確にならないため、ファイルをダウンロードするときに「サイズが不明」と「残り時間が不明」と表示されることになります。」

「該当する.htaccessファイルの次の行を使用して、1つのスクリプトで簡単に無効にすることができます。

SetEnvIfNoCase Request_URI ^ /download.php no-gzip dont-varyここで、download.phpは、サーバーのルートディレクトリパス(www.crimsonbase.com/download.phpなど)にあるダウンロードスクリプトにあると想定されています。(これは、正規表現が^ /download.phpであるためです。)」

また、スクリプトは安全ではないことに注意してください。誰かが_GET['file']の次のgetパラメータを効果的に送信できます

../../../../../Documents/MyStuff

$pathの制限を完全に無効にします。

パス内の参照をすべて削除することをお勧めします。

于 2012-12-05T02:37:03.373 に答える
0

今日も同様の問題があり、ダウンロードしたファイルの合計サイズ(ダウンロードの進行状況)を取得できませんでした。

ブラウザのヘッダーはコンテンツタイプとして「gzip」を示していました。このhtaccess行によって、サーバーがdownload.phpスクリプトでgzipを使用するのを防ぐことでこれを修正できました。

SetEnvIfNoCase Request_URI ^ /download.php no-gzip dont-vary

于 2014-10-23T19:38:47.967 に答える