【发布时间】:2018-01-11 09:08:14
【问题描述】:
我正在尝试使用 AWS C++ 开发工具包将文件上传到 S3。文件传输得很好,但内容类型是“binary/octet-stream”而不是“text/html”。当我在 S3 控制台中查看文件时。有一个“text/html”类型的“x-amz-meta-content-type”元数据记录。如何设置我要上传的文件的实际内容类型?
int main (int, char**)
{
Aws::SDKOptions options;
Aws::InitAPI (options);
client = new Aws::S3::S3Client;
Aws::S3::Model::PutObjectRequest request;
request.SetBucket ("mywebsite.notreal.net");
request.SetKey ("index.html");
request.SetACL (Aws::S3::Model::ObjectCannedACL::public_read);
request.SetContentEncoding ("UTF-8");
request.AddMetadata ("Content-Type", "text/html");
auto inputData = Aws::MakeShared<Aws::FStream> ("PutObjectInputStream", "index.html", std::ios_base::in | std::ios_base::ate);
request.SetContentLength (inputData-> tellg ());
request.SetBody (inputData);
auto result = client-> PutObject (request);
return result.IsSuccess () ? 0 : 1;
}
v
【问题讨论】:
-
不要使用
AddMetadata。Content-Type需要在 PUT 请求的 HTTP 标头中设置。有一个可用的SetContentType函数,继承自Aws::AmazonStreamingWebServiceRequest
标签: c++ amazon-web-services amazon-s3