およそ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 )、 終了します。
完璧なソリューション!