ホームページ  >  記事  >  バックエンド開発  >  PHPでファイルのダウンロードを実装する方法

PHPでファイルのダウンロードを実装する方法

WBOY
WBOYオリジナル
2016-06-20 12:25:451472ブラウズ

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();

(3) jQuery Mobile は の動作を変更します。したがって、jQuery Mobile を使用する場合、手動クリックまたは Java でシミュレートされたクリックに関係なく、download.php ページにジャンプし、ダウンロードはトリガーされません。 (4) download.phpにlocation.hrefやlocation.replaceを指示してもダウンロードできます。このメソッドは jQuery Mobile の影響を受けません。

(5) 上記 2 つの方法でダウンロードすると、Chrome は「リソースはドキュメントとして解釈されましたが、MIME タイプ application/octet-stream で転送されました」というプロンプトを表示します。 に html5 属性の download を追加すると、この問題を解決できます。 現時点では、location.href または location.replace によってトリガーされるダウンロードに対する解決策はありません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。