[HP]php実装ファイルダウンロード

1867 ワード

1.ハイパーリンクのhref属性の設定


ブラウザがファイルを解析できない場合、ブラウザは自動的にダウンロードします.ファイルがピクチャまたは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でトリガーされたダウンロードは、しばらく解決できません.