PHP でファイル ダウンロード コードをより速く提供できるようにする_PHP チュートリアル
ただし、これを行うと、統計や権限チェックなどを行うことができなくなります。そのため、多くの場合、PHP を使用して転送を行い、ユーザーにファイルのダウンロードを提供します
$file = "/tmp/dummy.tar.gz";
header("Content-type: application/octet-stream");性質: filename= "' .basename($file) . '"');
readfile($file);これには問題があります。つまり、ファイルが中国語の名前の場合、ファイル名が文字化けしてダウンロードされる可能性があります
そこで、いくつかの修正を加えてみましょう (参考: :
コードをコピーします
)。コードは次のとおりです:
$ua = $_SERVER["HTTP_USER_AGENT"];
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20" , $encoded_filename);
if (preg_match("/MSIE/", $ua )) {
header('Content-Disposition:attachment; filename="' . $encoded_filename . '"'); ("/Firefox/", $ua)) {
header("Content-Disposition:attachment; filename*="utf8''" . $filename . '"')
} else {
header('Content-Disposition : 添付ファイル名="' . $ファイル名 . '"');
}
header('Content-Disposition: 添付ファイル; ファイル名="' . $ファイル名 . '"');
ヘッダー("コンテンツの長さ: " . filesize($file));
readfile($file);
さて、見た目はかなり良くなりましたが、まだ問題があり、それは PHP の readfile が可能な限り効率的であるように努めています。 PHP 自体のメモリを占有しない、実際には MMAP (サポートされている場合) を使用する必要がある、または、ループでファイルを読み取り、直接出力するために固定バッファーが使用されます
Apache + PHP mod の場合、出力時に、最後に、Nginx + fpm の場合は、追加のネットワーク IO ももたらすため、Web サーバーは直接送信できます。 PHP 層を経由せずにファイルをユーザーに送信しますか?
今日、興味深い記事を見つけました: How I PHP: X-SendFile.
コードをコピーします
コードは次のとおりです:
$file = "/tmp/中文名前.tar.gz";
header('Content-Disposition :attachment; filename="' . $encoded_filename . '"');
} else if (preg_match("/Firefox/", $ua)) {
header("Content-Disposition:attachment; filename*="utf8' '" . $filename . '"');
} else {
header('Content-Disposition:attachment; filename="' . $filename . '"');
}
header(' Content-Disposition:attachment; .basename($file).'"');
//Xsendfile にファイルを送信させます
X-Sendfile ヘッダーは Apache によって処理され、応答ファイルはクライアントに直接送信されます
Lighttpd と Nginx にも同様のモジュールがありますので、興味がある場合はチェックしてください。
http://www.bkjia.com/PHPjc/325558.html
www.bkjia.com
http://www.bkjia.com/PHPjc/325558.html技術記事

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
