【问题标题】:Setting metadata on S3 multipart upload在 S3 分段上传上设置元数据
【发布时间】:2015-02-04 03:33:26
【问题描述】:

我想将文件分段上传到 S3,并在文件上设置一些元数据。我正在使用 boto 与 S3 进行交互。我可以像这样通过单操作上传设置元数据:

有没有办法通过分段上传设置元数据?我已经尝试this method 复制密钥以更改元数据,但它失败并出现错误:InvalidRequest: The specified copy source is larger than the maximum allowable size for a copy source: <size>

我也尝试过以下操作:

key = bucket.create_key(key_name)
key.set_metadata('some-key', 'value')
<multipart upload>

...但是分段上传会覆盖元数据。

我正在使用代码similar to this 进行分段上传。

【问题讨论】:

    标签: file-upload amazon-s3 boto


    【解决方案1】:

    抱歉,我刚刚找到答案:

    the docs:

    如果您想提供任何描述正在上传的对象的元数据,您必须在请求中提供它以启动分段上传。

    所以在boto 中,可以在initiate_multipart_upload 调用中设置元数据。 Docs here.

    【讨论】:

    【解决方案2】:

    今天早些时候遇到了这样的问题,发现没有关于如何正确处理的信息。 下面提供了有关我们如何解决该问题的代码示例。

            $uploader = new MultipartUploader($client, $source, [
            'bucket' => $bucketName,
            'key' => $filename,
            'before_initiate' => function (\Aws\Command $command) {
                $command['ContentType'] = 'application/octet-stream';
                $command['ContentDisposition'] = 'attachment';
            },
        ]);
    

    不幸的是,文档 https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-multipart-upload.html#customizing-a-multipart-upload 并没有明确和易于理解,如果您想通过分段上传提供替代元数据,则必须采用这种方式。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多