我想将文件从系统上传到AWS S3服务器。我正在使用允许我上传文件的预签名URL。
它必须在流中发生,因为我们希望将来在上载期间gzip该文件。我尝试使用HttpClientFactory并能够下载带有流的文件。
可悲的是,我无法上载。我不确定如何用能够从我的系统读取文件的流填充请求。
我尝试用StreamFactory填充请求,但无法使用Aws :: FStream初始化请求。
auto url = client->GeneratePresignedUrl("bucketName", "s3Key", Aws::Http::HttpMethod::HTTP_POST, 3600);
static std::shared_ptr<Aws::Http::HttpClientFactory> MyClientFactory{};
auto MyHttpClient = Aws::Http::CreateHttpClient(getClientConfig());
const std::shared_ptr<Aws::Http::HttpRequest> req(
Aws::Http::CreateHttpRequest(url, Aws::Http::HttpMethod::HTTP_POST,
Aws::Utils::Stream::DefaultResponseStreamFactoryMethod));
std::shared_ptr<Aws::IOStreamFactory> streamfac;
Aws::New<Aws::FStream>("C:/Development/test3.txt", std::ios_base::in);
std::shared_ptr<Aws::IOStreamFactory>
//Stuck here: req->SetResponseStreamFactory(???)
答案 0 :(得分:0)
我能够解决问题。
auto inStream = std::make_shared<boost::filesystem::fstream>(filepath, std::ios_base::in | std::ios_base::binary);
req->AddContentBody(inStream);
auto res = MyHttpClient->MakeRequest(req);