the PHP Flysystemパッケージを使用して、AWS S3バケットのコンテンツをストリーミングしています。特に、私は$filesystem->readStream
を使用しています。AWS S3からファイルをZipにストリームする方法
私の質問
私は、ファイルをストリーミングする場合、それはmyzip.zipで終わるとサイズが正しいですが、ときに解凍し、それはmyzip.zip.cpgzなります。ここに私のプロトタイプがあります:
header('Pragma: no-cache');
header('Content-Description: File Download');
header('Content-disposition: attachment; filename="myZip.zip"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
$s3 = Storage::disk('s3'); // Laravel Syntax
echo $s3->readStream('directory/file.jpg');
私は間違っていますか?
サイド質問
私はこのようなファイルをストリーミングする場合は、それをしない:
- は完全にクライアントに転送、または
- はそれをしない取得し、その後、私のサーバーのRAMにダウンロードされますチャンク内に保存されてバッファに保存され、クライアントに転送されますか?
基本的に、数十GBのデータがストリーミングされていると私のサーバーに負担がかかりますか?
この場合、tmpfile()とは何ですか?それは一時ファイルへのパスを取得しているはずですか? –
@ mark.inman PHPの[tmpfile()]関数(http://php.net/manual/en/function.tmpfile.php) "読み書き(w +)モードで一意の名前を持つ一時ファイルを作成し、ファイルハンドルを返します。 " 一時ファイルへのパスを取得するには、[stream_get_meta_data()](http://php.net/manual/en/function.stream-get-meta-data.php)関数を実行し、戻り値の ' '$ zipPath'と' $ jpgPath'で表示されるようなuri – bradynpoulsen