PHP スクリプトでの再開可能なダウンロード
ファイル パスを保護するために PHP スクリプトを介してファイルのダウンロードをトンネリングする場合、デフォルトのメソッドではサポートされていないことが明らかになります。再開可能なダウンロード。この問題に対処するには、次の解決策を検討してください。
再開可能なダウンロードをサポートする核心は、部分的なコンテンツ処理を実装することです。これを開始するには、すべての応答で Accept-Ranges: bytes ヘッダーを送信し、部分コンテンツのサポートを示します。
Range: bytes=x-y ヘッダーを持つリクエストを受信すると、クライアントによって指定された範囲を解析します。ファイルを開き、バイト x をシークし、要求された y ~ x バイトを送信します。さらに、応答ステータスを HTTP/1.0 206 Partial Content に設定します。
このアプローチに大まかに従う基本的な PHP コード スニペットを次に示します。
$filesize = filesize($file); if (isset($_SERVER['HTTP_RANGE'])) { $partialContent = true; preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset; } else { $partialContent = false; } $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 で再開可能なダウンロードを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。