对于阿里云的oss上传本地图片的相关注意点

本文详细介绍了如何使用阿里云OSS提供的C++ SDK进行图片上传操作,包括购买存储空间、下载安装SDK、配置AccessKeyId与AccessKeySecret等关键步骤,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#先在阿里云购买储存空间
我的结果如下:

在这里插入图片描述

然后下载相关的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:

上传结果图片和视频:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值