试图在程序中替换文件时出现"No response body"错误(C++)

0

【以下的问题经过翻译处理】 在我的C++项目中使用S3 API,我有一个函数,基本上就像这样:

void replaceFile(const std::string &key, const std::string &filePathToUpload, std::function<void (const Aws::S3::Model::PutObjectOutcome &)> successCallback, std::function<void (const Aws::S3::Model::PutObjectOutcome &)> failureCallback)
{
	Aws::S3::S3Client client;
	Aws::S3::Model::PutObjectRequest req;
	req.SetBucket("我的存储桶名称");
	req.SetBody(std::make_shared<std::fstream>(filePathToUpload));
	req.SetACL(Aws::S3::Model::ObjectCannedACL::public_read);
	req.SetKey(key);
	if (auto outcome = client.PutObject(req); outcome.IsSuccess())
		successCallback(outcome);
	else
		failureCallback(outcome);
}

基本上,我想替换已经上传的文件。(我想我真的可以重新上传文件,但我没想到那个。然而,上传函数也有同样的问题。)不幸的是,这个函数不起作用。它向AWS发送数据,但最终出现错误"No response body."。这个错误是HTTP 400,内部错误代码为100,是Aws::S3::S3Errors::UNKNOWN。我查看了SDK问题列表,寻找涉及此错误消息的问题,发现了几个看起来相似的问题,但它们都与HEAD有关,而不是PUT。SDK是否在我的背后执行HEAD请求?我有漏掉了什么吗?有什么错误吗?

我在openSUSE Tumbleweed上运行这个项目,使用的是SDK版本1.9.180 (好吧,好吧,我用的是~~master~~ main,但那是一样的)。

非常感谢。

profile picture
EXPERTO
preguntada hace 5 meses41 visualizaciones
1 Respuesta
0

【以下的回答经过翻译处理】 我解决了自己的问题:我发送给 std :: fstream 的文件路径为空,因此 AWS 没有接收到任何数据。

profile picture
EXPERTO
respondido hace 5 meses

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas