PHPは、大きなファイルをダウンロードします

およそ700M大きなファイルは、以下のように、コードの一部を見つけるために、ローカルコンピュータとインターネットにダウンロードする必要があるプロジェクトがあります:

1 <?phpの
 2              $の本名 = "xxx.pdf" 3              $ファイル名 = "xxx.pdf" 4              は、set_time_limit(0 );
5              $のファイルサイズ = ファイルサイズ$の本名)。
6              ヘッダ(「コンテンツ記述:ファイル転送」)。
7              ヘッダ(「コンテンツタイプ:アプリケーション/オクテットストリーム」);
8              ヘッダ(「コンテンツ転送エンコード:バイナリ」)。
9              ヘッダ(「的な範囲を受け入れ:バイト」);
10              ヘッダ(「有効期限:0]を。11              ヘッダ( 'のCache-Control:マスト再検証' );
 12は、             ヘッダ( 'プラグマ:パブリック' );
 13は、             ヘッダ( 'のContent-Length:'。$ファイルサイズ);
 14              ヘッダ(「コンテンツの廃棄:添付ファイル。 =ファイル名' $ファイル名は、)
 15  
16              // 開いているファイル
。17              $ FPは = のfopenの$本名 RB'を' );
 18である             // ポインタの位置を設定する
。19              のfseek$ FP、0 );
 20は 
21である             // オープンバッファ
22             ob_start ();
 23はある             // ファイルフェッチ
24              しばらく(!feofを$ FPを)){
 25                  $ CHUNK_SIZE = 1024×8; // 8キロバイト
26は                 、エコー のfread$ FP$のCHUNK_SIZE );
 27                  ob_flush(); // WebサーバーへリフレッシュバッファPHP 
28                  フラッシュ(); // リフレッシュバッファWebサーバーブラウザに
29                  SLEEP(1); // KBをダウンロードするために1秒ごと8。
30              }
 31で             // 閉じるバッファは
32              ob_end_clean();
33  
34              FCLOSE$ FP)。       

!完璧なダウンロードが、ラインに展開する場合、問題があります:

説明:HTTP、HTTPSオンライン環境のためのテスト環境

次のコードを見つけ、....グーグルを続行します。

<?PHPの
             $の本名 = "xxx.pdf" $ファイル名 = "xxx.pdf" set_time_limit(0 );
            $のファイルサイズ = ファイルサイズ$の本名)。
            ヘッダ(「コンテンツ記述:ファイル転送」);
            ヘッダ(「コンテンツタイプ:アプリケーション/オクテットストリーム」);
            ヘッダ(「コンテンツ転送エンコード:バイナリ」)。
            ヘッダ( '受け入れ-範囲:バイト' );
            ヘッダ( '有効期限:0' )。
            ( 'のCache-Control:-再検証する必要があり、ポストチェック= 0、事前にチェック= 0' );
            ヘッダ( 'プラグマ:パブリック' );
            ヘッダ( 'のContent-Length' $のファイルサイズ)。
            ヘッダ( 'コンテンツディスポジション:添付ファイル;ファイル名='。$ファイル名); 

            // 打开文件
            $ FP = のfopen$の本名、 'RB' );
            ob_clean ();
            ob_end_flush ();
            しばらく(!feofを$ FP )){
                 エコー のfread$ fpのファイルサイズ$ );
                 ob_flush(); // WebサーバーのPHPにリフレッシュバッファ
                フラッシュ(); // ブラウザのバッファへのWebサーバーを更新するには
            } 

            fcloseは$ FP )、
             終了します

完璧なソリューション!

おすすめ

転載: www.cnblogs.com/weibofang/p/10957016.html