【问题标题】:Low-Level API Multipart File Upload Process is not working低级 API 多部分文件上传过程不起作用
【发布时间】:2016-12-30 06:30:48
【问题描述】:

我们正在尝试通过多部分文件上传流程上传文件。通过使用下面给出的代码:

while (!feof($file)) {

$result = $s3->uploadPart(array(
    'Bucket'     => $bucket,
    'Key'        => $key,
    'UploadId'   => $uploadId,
    'PartNumber' => $partNumber,
    'Body'       => fread($file, filesize($filename))
));
$parts[] = array(
    'PartNumber' => $partNumber++,
    'ETag'       => $result['ETag'],
);
}

// 4. 完成分段上传。

$result = $s3->completeMultipartUpload(array(

    'Bucket'   => $bucket,
    'Key'      => $key,
    'UploadId' => $uploadId,
    'Parts'    => $parts,
));
$url = $result['Location'];

fclose($file);

通过使用此代码,文件被转换为 Multipart 但无法上传文件。它通过 print_r 显示这种类型的错误:

Guzzle\Service\Resource\Model Object
(

[structure:protected] => 
[data:protected] => Array
    (
        [ServerSideEncryption] => 
        [ETag] => "fcfc6838dfrtefr87b27b642e7d63021"
        [SSECustomerAlgorithm] => 
        [SSECustomerKeyMD5] => 
        [RequestId] => 4RTYPEFE054567369BD46D
    )

)

正在上传 /tmp/phplA534j 的第 2 部分。

Guzzle\Service\Resource\Model Object
(

[structure:protected] => 
[data:protected] => Array
    (
        [ServerSideEncryption] => 
        [ETag] => "d41d8uytrf67fdfrf00b204e9800998ecf8427e"
        [SSECustomerAlgorithm] => 
        [SSECustomerKeyMD5] => 
        [RequestId] => YTYPO67167874586EF802536C
    )

)

正在上传 /tmp/phplA534j 的第 3 部分。

你能帮帮我吗?

【问题讨论】:

    标签: php amazon-web-services amazon-s3


    【解决方案1】:

    两件事。首先,你可以用SourceFile代替Body

    $result = $s3->uploadPart(array(
        'Bucket'     => $bucket,
        'Key'        => $key,
        'UploadId'   => $uploadId,
        'PartNumber' => $partNumber,
        'SourceFile'       => 'Path/To/Your/File.ext')
    ));
    

    其次,这不是完成上传的正确方式:

    $result = $s3->completeMultipartUpload(array(
    
        'Bucket'   => $bucket,
        'Key'      => $key,
        'UploadId' => $uploadId,
        'MultipartUpload'    =>array('Parts'=>  $parts),
    ));
    

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 2021-02-04
      • 2018-01-30
      • 2011-12-19
      • 1970-01-01
      • 2018-06-20
      • 2019-05-31
      • 2016-04-23
      • 2016-02-20
      相关资源
      最近更新 更多