ホームページ >バックエンド開発 >PHPチュートリアル >PHP では再開可能なファイルのダウンロードをどのように実装できますか?
PHP ベースのファイル トンネリングによるダウンロードの再開
PHP がファイル ダウンロードのプロキシとして使用されるこのシナリオでは、ユーザーは課題に直面します。中断されたダウンロードを再開するとき。この記事は、この問題に対処し、考えられる解決策を検討することを目的としています。
PHP での再開可能なダウンロードの実装
再開可能なダウンロードを有効にするには、最初に部分コンテンツに対するサーバーのサポートを伝える必要があります。 「Accept-Ranges: bytes」ヘッダー経由。その後、リクエストに「Range: bytes=x-y」ヘッダー (x と y は数値を表します) が含まれている場合は、リクエストされた範囲を抽出し、それに応じてファイル転送を操作する必要があります。
次の PHP コードはこれを実現します。 :
$filesize = filesize($file); $offset = 0; $length = $filesize; if (isset($_SERVER['HTTP_RANGE'])) { preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset; } $file = fopen($file, 'r'); fseek($file, $offset); $data = fread($file, $length); fclose($file); if ($partialContent) { header('HTTP/1.1 206 Partial Content'); header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize); } header('Content-Type: ' . $ctype); header('Content-Length: ' . $filesize); header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Accept-Ranges: bytes'); print($data);
追加注
以上がPHP では再開可能なファイルのダウンロードをどのように実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。