私はgzip文字列を作成し、オブジェクトとしてs3にアップロードしています。しかし、私はこのエラーを取得S3から同じファイルをダウンロードし、gunzipを使用してローカルにそれを解凍する場合:gunzip: 111.gz: not in gzip format
私はmime_content_typeを見てみると、それは次のように設定されているS3からダウンロードしたファイルに返さ:application/zlib
gzipオブジェクトをs3にアップロードするにはどうすればよいですか?
ここで私はコードがありますgzipファイルを生成し、S3にそれをプッシュする実行している:
for($i=0;$i<=100;$i++) {
$content .= $i . "\n";
}
$result = $this->s3->putObject(array(
'Bucket' => 'my-bucket-name',
'Key' => '111.gz',
'Body' => gzcompress($content),
'ACL' => 'authenticated-read',
'Metadata' => [
'ContentType' => 'text/plain',
'ContentEncoding' => 'gzip'
]
));
奇妙なことは、私は、ローカルのgzipコンテンツを視聴する場合、私はそれをS3に送信する前に、私はそれを解凍し、元の文字列を見ることができるだということです。だから私は間違ってファイルをアップロードする必要があります、任意の思考?
gzencode($ content)ではなくgzcompress($ content)でなければなりません。 gzencodeは適切なgzipアーカイブを作成するために必要なヘッダデータを追加します。 – Ben