phpでファイルダウンロードを実装する方法
1. ハイパーリンクのhref属性を設定します
ブラウザがファイルを解析できない場合、ブラウザは自動的にファイルをダウンロードします。ファイルが画像またはテキストの場合は、ブラウザで直接開きます。
2. 出力ファイルストリーム
//download.php
//ページがロードされたら、
downloadFile を呼び出します。 ( "3.rar","something.rar");
//$filePath はサーバーのファイル アドレスです
//$saveAsFileName はユーザーが指定したダウンロードされたファイル名です
Function downloadFile($filePath,$saveAsFileName){
// バッファをクリアし、出力バッファを閉じます
ob_end_clean(); // r: 読み取りモードでのみ開く場合、b: バイナリ モードを強制する
$fileHandle=fopen($filePath, "rb");
if ($fileHandle===false){
Echo "ファイルが見つかりません: $filePathn";
exit;
}
Header("Content-type: application/octet-stream" );
Header("Content-Transfer-Encoding: バイナリ");
Header("Accept-Range: バイト");
Header("Content-Length") : ".filesize ($filePath));
Header("Content-Disposition:attachment; filename="$saveAsFileName"");
while(!feof($fileHandle)) {
// ファイル ポインタ ハンドルから最大 length バイトを読み取ります
echo fread($fileHandle, 32768);
fclose($fileHandle) );
}
杭州 PHP エンジニア注:
(1) download.php は < に設定できます。 ;a> タグの href 属性で、 タグをクリックすると、ブラウザにダウンロードのプロンプトが表示されます。 (2) jQuery が の click イベントのトリガーをシミュレートするときにバグがあります。html オブジェクトの click メソッドを使用する必要があります。 $('#hyperLink')[0].click();
(5) 上記 2 つの方法でダウンロードすると、Chrome は「リソースはドキュメントとして解釈されましたが、MIME タイプ application/octet-stream で転送されました」というプロンプトを表示します。 に html5 属性の download を追加すると、この問題を解決できます。 現時点では、location.href または location.replace によってトリガーされるダウンロードに対する解決策はありません。