#先在阿里云购买储存空间
我的结果如下:
然后下载相关的SDK,下面是C++相关SDK包:
https://help.aliyun.com/document_detail/106216.html?spm=a2c4g.11186623.6.1144.7ba37815xyQgAd
并按照这个步骤进行安装
如果提示找不到.dll文件,则把.dll文件复制到可执行程序所在文件夹。
下面代码的accesskeyid和accesskeysecret在这里:
#代码
#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* 初始化OSS账号信息 */
std::string AccessKeyId = "#########";
std::string AccessKeySecret = "###############";
std::string Endpoint = "oss-cn-shanghai.aliyuncs.com";
std::string BucketName = "xxp";
/* yourObjectName表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg
这里表示的是你oss上建立的文件夹和文件名称*/
std::string ObjectName = "image/10.jpg";
/* 初始化网络等资源 */
InitializeSdk();
ClientConfiguration conf;
OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);
/*这里表示的是你本地文件夹要传的文件名称,并且把 \ 改成 / */
std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("C:/Users/dell/Desktop/ThirdParty/image/10.jpg", std::ios::in | std::ios::binary);
PutObjectRequest request(BucketName, ObjectName, content);
/*(可选)请参见如下示例设置存储类型及访问权限ACL*/
//request.MetaData().addHeader("x-oss-object-acl", "private");
//request.MetaData().addHeader("x-oss-storage-class", "Standard");
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;
}
##主要注意如下几点:
1.本地图片上传和从内存上传不一样,代码稍微不同。
2.objectname☞的是oss上的文件夹及上传的文件名称。
3.sdk中的yourlocalfilename☞的是本地的文件夹及要上传的文件名称。并且
要把复制过来的路径的“\”改为“/”,不然会报错,错误如下:
PutObject fail,code:ValidateError,message:Request body is in fail state. Logical error on i/o operation.,requestId:
上传结果图片和视频: