PHP - 从 AWS 存储桶下载的文件存在文件编码问题
PHP - file encoding issue with files downloaded from AWS bucket
使用 PHP 中的以下代码,我尝试从 AWS 存储桶下载文件。
我能够成功下载文件,但下载的文件不可读。文件编码设置为 ANSI。
在 AWS 存储桶中,此文件的元数据如下
内容类型:text/csv;%20charset=utf-16le
内容编码:gzip
require '/aws/aws-autoloader.php';
use Aws\S3\S3Client;
// Instantiate the S3 client with your AWS credentials
$key = [access_key];
$secret = [secret_key];
$client = S3Client::factory(array(
'credentials' => array(
'key' => $key,
'secret' => $secret
)
));
$bucket = [bucket_name];
$file=[bucket_file_location];
$fileSaveAs = [download_file_location];
// Get an object using the getObject operation & download file
$result = $client->getObject(array(
'Bucket' => $bucket,
'Key' => $file,
'SaveAs' => $fileSaveAs
));
谁能解释一下,这里有什么问题?
编辑 1:
当我直接从 AWS 存储桶下载这个文件时,它下载得很好。
编辑 2:
我刚注意到下载的 CSV 文件总是 1KB 大小。
下载文件损坏模式:
`‹½”ÍJÃ@F¿µOÑPi+h]V[Tð§hâFÚ4HÐjI¬Ð—W¿¤
编辑 3 :
所有这些文件都是使用 gsutil
从 Google play bucket 传输的
从 AWS 存储桶收到的文件是 gzip。 (内容编码:gzip)
所以需要使用gzdecode函数
解码gzip压缩字符串
下面的代码解决了问题
$content = gzdecode(file_get_contents($fileSaveAs));
file_put_contents($fileSaveAs,$content);
使用 PHP 中的以下代码,我尝试从 AWS 存储桶下载文件。 我能够成功下载文件,但下载的文件不可读。文件编码设置为 ANSI。
在 AWS 存储桶中,此文件的元数据如下 内容类型:text/csv;%20charset=utf-16le 内容编码:gzip
require '/aws/aws-autoloader.php';
use Aws\S3\S3Client;
// Instantiate the S3 client with your AWS credentials
$key = [access_key];
$secret = [secret_key];
$client = S3Client::factory(array(
'credentials' => array(
'key' => $key,
'secret' => $secret
)
));
$bucket = [bucket_name];
$file=[bucket_file_location];
$fileSaveAs = [download_file_location];
// Get an object using the getObject operation & download file
$result = $client->getObject(array(
'Bucket' => $bucket,
'Key' => $file,
'SaveAs' => $fileSaveAs
));
谁能解释一下,这里有什么问题?
编辑 1: 当我直接从 AWS 存储桶下载这个文件时,它下载得很好。
编辑 2: 我刚注意到下载的 CSV 文件总是 1KB 大小。
下载文件损坏模式:
`‹½”ÍJÃ@F¿µOÑPi+h]V[Tð§hâFÚ4HÐjI¬Ð—W¿¤
编辑 3 : 所有这些文件都是使用 gsutil
从 Google play bucket 传输的从 AWS 存储桶收到的文件是 gzip。 (内容编码:gzip)
所以需要使用gzdecode函数
解码gzip压缩字符串下面的代码解决了问题
$content = gzdecode(file_get_contents($fileSaveAs));
file_put_contents($fileSaveAs,$content);