Amazon web services 如何使用“将对象上载到AWS S3”;传输编码:分块; < >我使用C++的AWSSDK将数据上传到S3桶。我正在使用类Aws::S3::S3Client的方法PutObject()上传数据
然而,在上传数据之前,我需要知道我上传的数据的内容长度。我需要在请求中设置内容长度(请求类型为Amazon web services 如何使用“将对象上载到AWS S3”;传输编码:分块; < >我使用C++的AWSSDK将数据上传到S3桶。我正在使用类Aws::S3::S3Client的方法PutObject()上传数据,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,然而,在上传数据之前,我需要知道我上传的数据的内容长度。我需要在请求中设置内容长度(请求类型为Aws::S3::Model::PutObjectRequest)。或者,awssdk库将尝试自行确定主体的大小(awssdk通过查找有效负载数据的末尾来读取其大小) 无论如何,在我的情况下,我还不知道我上传的数据的内容长度。我正在一台压缩数据的服务器上工作。我必须等待压缩结束,才能知道压缩数据的最终大小。我不想再等了。相反,我希望在生成压缩数据时开始上传到S3。可以做到的方法是在向S3服务器发送HTT
Aws::S3::Model::PutObjectRequest
)。或者,awssdk库将尝试自行确定主体的大小(awssdk通过查找有效负载数据的末尾来读取其大小)
无论如何,在我的情况下,我还不知道我上传的数据的内容长度。我正在一台压缩数据的服务器上工作。我必须等待压缩结束,才能知道压缩数据的最终大小。我不想再等了。相反,我希望在生成压缩数据时开始上传到S3。可以做到的方法是在向S3服务器发送HTTP post请求时使用“传输编码:分块”
是否有方法使用Aws::S3::S3Client上传带有“传输编码:分块”的数据*强>
<>我下载了AWSSDK的C++源代码,我修改了一点,强制发送HTTP请求中的“传输编码:块”。但是S3服务器返回HTTP错误代码501:
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NotImplemented</Code>
<Message>A header you provided implies functionality that is not implemented</Message>
<Header>Transfer-Encoding</Header>
<RequestId>8F55B09D484DD66C</RequestId>
<HostId>gZk6zaPcObsTfclz0zXvKGtPT5udzDKigIrm7laD3csG30vhx3pa0eFFS8nh6t9k7XkDeJRm9Z4=</HostId>
</Error>
您需要查看多部分上传。我还没有使用C++ SDK,所以不能给你更多的信息。看起来是的,只有缓冲+多部分在这个例子中会起作用。