使用libCurl + headers下载AWS S3后无法打开自己的媒体文件

时间:2016-09-12 13:59:46

标签: c++ amazon-web-services amazon-s3 libcurl

我已经在AWS开发者论坛中提出了这个问题而没有得到任何回复。所以这里:

我使用自己的libCurl C ++应用程序从自己的AWS S3存储桶下载自己的媒体文件。

如果我将文件标记为公共文件并使用简单的libCurl GET请求(没有其他标题)下载它,则下载的文件可以正常工作。 但是,如果我将完全相同的文件标记为private并将标头添加到GET请求(Host,x-amz-date,x-amz-content-sha256和Authorization Header),则无法打开下载的文件。

我的问题是: 为什么在GET请求中添加标题会改变下载的文件? 我该怎么做才能解决这个问题?

更新:我发现使用十六进制编辑器,HTTP响应在开头写入接收文件。 我该如何防止这种情况?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。只需从我的代码中删除此行:

curl_easy_setopt(curl, CURLOPT_HEADER, true);

最初,我认为这一行允许我在HTTP请求中添加额外的标头... 相反,它在输出中包含HTTP响应,这是我的问题。