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);