php が大きなファイルを送信できない問題の解決策: 1. "Ranges:(unit=first byte pos)-[last byte pos]"; のような構文で Range パラメータを設定します。 2. "Content" を設定します。 -Range"; 3. 「GET /test.rar HTTP/1.1 Connection: close Host: 116.1.219.219」リクエストを介してファイル全体をダウンロードします。
このチュートリアルの動作環境: Windows 10 システム、PHP バージョン 8.1、DELL G3 コンピューター
次の場合はどうすればよいですかphpでは大きなファイルは送信できないのですか?
非常に大きなファイルをアップロードするための PHP ソリューション
1. 概要
いわゆる履歴書のアップロードは、実際には単にダウンロードを指します。これは、ファイルがダウンロードされた時点からダウンロードを続けることを意味します。ブレークポイントは、HTTP プロトコルの以前のバージョンではサポートされていませんでしたが、HTTP/1.1 以降はサポートされています。通常、Range および Content-Range エンティティ ヘッダーはブレークポイントのダウンロードにのみ使用されます。 HTTP プロトコル自体はブレークポイントのアップロードをサポートしていないため、自分で実装する必要があります。
2. 範囲
は、通常、最初のバイトの位置と最後のバイトの位置を指定するためにリクエスト ヘッダーで使用されます。形式:
範囲: クライアントからサーバーへのリクエストに使用されます。フィールドを変更することで、ダウンロードされるファイルの特定のセグメントのサイズと単位を指定できます。バイト オフセットは開始されます。 0から。一般的な形式:
Ranges: (unit=first byte pos)-[last byte pos] Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分 Ranges: bytes=0~N 下载第0-N字节范围的内容 Ranges: bytes=M-N 下载第M-N字节范围的内容 Ranges: bytes=-N 下载最后N字节内容
1. 次の点に注意する必要があります:
(1) このデータ間隔は閉じた間隔であり、開始値は 0 であるため、「Range: bytes=0-1」のようなリクエストは実際には最初の 2 バイトをリクエストしています。
(2) "範囲: bytes=-200" は、ファイルの先頭で 201 バイトを要求することを示すのではなく、ファイルの末尾で 200 バイトを要求することを示します。
(3) 最後のバイト pos が最初のバイト pos より小さい場合、この Range リクエストは無効なリクエストです。サーバーはこの Range リクエストを無視し、200 で応答し、ファイル全体を送信する必要があります。クライアント。
(4) 最後のバイト pos がファイル長以上の場合、Range リクエストは満たされないとみなされるため、サーバーは 416、Requested range not Satisfiable で応答する必要があります。
2. 説明例:
は最初の 500 バイトを表します: bytes=0-499
は 2 番目の 500 バイトを表します: bytes =500- 999
最後の 500 バイトを表します: bytes=-500
500 バイト以降の範囲を表します: bytes=500-
最初と最後の 1 バイト: bytes=0 -0,-1
同時に複数の範囲を指定します: bytes=500-600,601-999
3. Content-Range
は、エンティティ全体の一部の挿入位置を指定する応答ヘッダーで使用され、エンティティ全体の長さを示します。サーバーは部分応答をクライアントに返す前に、応答がカバーする範囲とエンティティ全体の長さを記述する必要があります。一般的な形式:
Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth]
4. ヘッダーの例
ファイル全体のダウンロード要求:
GET /test.rar HTTP/1.1 Connection: close Host: 116.1.219.219 Range: bytes=0-801 //一般请求下载整个文件是bytes=0- 或不用这个头
一般的な通常の応答
HTTP/1.1 200 OK Content-Length: 801 Content-Type: application/octet-stream Content-Range: bytes 0-800/801 //801:文件总大小
ブレークポイント再開の最も単純な実装は、おおよそ次のとおりです。
1. クライアントは 1024K ファイルをダウンロードし、そのうち 512K がダウンロードされました2. ネットワークが中断され、クライアントが送信の再開を要求するため、HTTP ヘッダーで次のように宣言する必要があります。今回再開する必要があるフラグメント:Range:bytes=512000-
Content-Range:bytes 512000-/1024000
PHP ビデオ チュートリアル 」
以上が大きなPHPファイルを送信できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。