我在使用OSS C++ SDK时,程序运行成功了,但是每一次控制台都有报错提示:
PutObject fail,code:ValidateError,message:Request body is in fail state. Logical error on i/o operation.,requestId:
代码如下:
···C++
#include <alibabacloud/oss/OssClient.h>
#include <alibabacloud/oss/Types.h>
#include <alibabacloud/oss/model/PutObjectRequest.h>
#include "OssClientImpl.h"
#include
using namespace AlibabaCloud::OSS;
int main(void)
{
/* 初始化OSS账号信息。*/
std::string Endpoint = "oss-cn-nanjing.aliyuncs.com";
std::string BucketName = "meng-qin-yuan";
std::string ObjectName = "test/1.txt";
std::string LocalFilePath = "C:/Users/Administrator/Desktop/1.txt";
std::string AccessKeyId = "###";
std::string AccessKeySecret = "###";
/* 初始化网络等资源 */
InitializeSdk();
ClientConfiguration conf;
OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
/*这里表示的是你本地文件夹要传的文件名称,并且把 \ 改成 / */
std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>(LocalFilePath, std::ios::in | std::ios::binary);
PutObjectRequest request(BucketName, ObjectName, content);
auto outcome = client.PutObject(request);
if (!outcome.isSuccess()) {
/* 异常处理 */
std::cout << "PutObject fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
ShutdownSdk();
return -1;
}
/* 释放网络等资源 */
ShutdownSdk();
return 0;
}
···
这里的·LocalFilePath有这个文件,AccessKeyID和AccessKeySecret也是可以访问的。
我使用的是从github clone的SDK, cmake编译,在Visual Studio 2022中配置。