ホームページ  >  記事  >  バックエンド開発  >  PHP_PHPチュートリアルに基づいたファイルのダウンロードの詳細な説明

PHP_PHPチュートリアルに基づいたファイルのダウンロードの詳細な説明

WBOY
WBOYオリジナル
2016-07-21 15:10:31938ブラウズ

php txt ファイルなどのダウンロード ファイル。
その結果、ブラウザに付属のダウンロード ボックスがポップアップし、名前を付けて保存操作が表示されます。場合によっては、メモリ オーバーフローやタイムアウトが発生することがあります。
タイムアウトになった場合は、set_time_limit(0);を設定してください。
メモリオーバーフローが発生している場合は、データベースから取り出したデータ量が多すぎることが原因である可能性があります。
ファイルから読み取っていてメモリオーバーフローが発生した場合、それはコードの読み取り方法が間違っているため、filesまたはfilegetcontensを呼び出す必要があります。
fopenの場合は、固定サイズのバッファを与え、それを読み込んでください。そうすればメモリオーバーフローは起こりません。
コードのような:

コードをコピー コードは次のとおりです:

if (file_exists($file_path)) { //ファイルが存在する場合
$handle = fopen($file_path, "r ");
while (!feof($handle)) {
$content = fgets($handle, 4096); //行を読み取る
echo $content; //バッファ、つまり php:// に出力します標準出力。バッファ設定値に達すると、tcp でブラウザに渡されて出力されます。通常、512 バイトに達すると、
}
fclose($handle);
}
します。
ただし、出力前に一度呼び出す必要があります。 @ob_end_flush(); は循環的に呼び出すことができません。一度だけ呼び出してください。
@ob_end_flush();//出力バッファの内容をフラッシュ(送信)し、バッファを閉じます

ファイルのダウンロード:
content-type://ダウンロード形式、ブラウザが解析できない形式はポップされますBox をダウンロードします
コードをコピーします コードは次のとおりです:

header("Content-Type: application/force-download");
header("Content-Type: application/download") ;
header("Content -Transfer-Encoding: binary");
header("Cache-Control:Must-revalidate、post-check=0、pre-check=0");
header("Pragma: no-cache ");
Header( "Content-type: application/octet-stream"); //応答コンテンツ タイプ
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize( $filename). ' bytes') ;
Header('Content-Disposition:attachment; filename='.$filename); //HTTP 応答ヘッダー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327085.html技術記事 txt ファイルなどの PHP ダウンロード ファイル。 その結果、ブラウザに付属のダウンロード ボックスがポップアップし、名前を付けて保存操作が表示されます。場合によっては、メモリ オーバーフローやタイムアウトが発生することがあります。 タイムアウトしました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。