[HP]php実装ファイルダウンロード
1867 ワード
1.ハイパーリンクのhref属性の設定
ブラウザがファイルを解析できない場合、ブラウザは自動的にダウンロードします.ファイルがピクチャまたはtxtの場合、ブラウザで直接開きます.
2.出力ファイルフロー
**注:**(1)download.phpは
ブラウザがファイルを解析できない場合、ブラウザは自動的にダウンロードします.ファイルがピクチャまたはtxtの場合、ブラウザで直接開きます.
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 "Can not find file: $filePath
";
exit;
}
Header("Content-type: application/octet-stream");
Header("Content-Transfer-Encoding: binary");
Header("Accept-Ranges: bytes");
Header("Content-Length: ".filesize($filePath));
Header("Content-Disposition: attachment; filename=\"$saveAsFileName\"");
while(!feof($fileHandle)) {
// handle length
echo fread($fileHandle, 32768);
}
fclose($fileHandle);
}
**注:**(1)download.phpは
ラベルのhref
属性に設定でき、
ラベルをクリックするとブラウザがダウンロードを促す.(2)jQueryシミュレーションが
のclick
イベントをトリガしたときにバグがあり,htmlオブジェクトのclickメソッドを用いるべきである.$('#hyperLink')[0].click();
(3)jQuery Mobileは
の動作を変更します.したがって、jQuery Mobileを使用する場合、手動クリックでもjavascriptシミュレーションクリックでもdownloadにジャンプする.phpページは、ダウンロードをトリガーしません.(4)location.href
またはlocation.replace
がdownloadに指向する.phpはダウンロードも可能です.この方法はjQuery Mobileの影響を受けない.(5)以上の2つの方法でダウンロードを行う場合,chromeは「Resource interpreted as Document but transferred with MIME type application/octet-stream
」と提示する.
にhtml 5プロパティdownloadを追加すると、この問題を解決できます.
でlocation.href
またはlocation.replace
でトリガーされたダウンロードは、しばらく解決できません.