c++SDK阿里云OSS使用

本章讲的是两种上传文件到oss的方式
我使用的是vs2017 IDE
安装C++SDK的过程:
安装 CMake。打开 cmd 进入 SDK 文件目录,创建 build 文件夹,运行cmake …生成所需文件,如果要构建 x64 体系结构,可以使用命令 cmake -A x64 …来实现。再用 Visual Studio 打开 alibabacloud-oss-cpp-sdk.sln 生成解决方案。生成lib和dll文件即可。
依赖库分debug和release版本。
需要分别编译。
导库:
包含目录
在这里插入图片描述
库目录:
在这里插入图片描述

库名:

在这里插入图片描述

#include <iostream>
#include <alibabacloud/oss/OssClient.h>	//oss库
using namespace std;
using namespace AlibabaCloud::OSS;

void uploadoss(String &str)
{

	/* 初始化OSS账号信息 */
	std::string AccessKeyId = "*****";
	std::string AccessKeySecret = "****";
	std::string Endpoint = "oss-cn-beijing.aliyuncs.com"; //图片访问地址域名地址
	std::string BucketName = "yourBucketName";	//你的bucket名字
	std::string ObjectName = "images/" + str;	//oss文件+文件名


	/* 初始化网络等资源 */
	InitializeSdk();

	ClientConfiguration conf;
	OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);

	/* 上传文件 */
	auto outcome = client.PutObject(BucketName, ObjectName, "../1.jpg");//本地文件地址


	if (!outcome.isSuccess()) {
		/* 异常处理 */
		std::cout << "CreateBucket fail" <<
			",code:" << outcome.error().Code() <<
			",message:" << outcome.error().Message() <<
			",requestId:" << outcome.error().RequestId() << std::endl;
		ShutdownSdk();
		return;
	}else
	{
		cout<<"send successful!"<<endl;
	}
	

	/* 释放网络等资源 */
	ShutdownSdk();
	return;

}

//内存上传
void uploadoss(String &picname, stringstream &picstream)
{

	/* 初始化OSS账号信息 */
	std::string AccessKeyId = "****";
	std::string AccessKeySecret = "***";
	std::string Endpoint = "oss-cn-beijing.aliyuncs.com"; //图片访问地址域名地址
	std::string BucketName = "yourBucketName";	//
	std::string ObjectName = "images/" + picname;


	/* 初始化网络等资源 */
	InitializeSdk();

	ClientConfiguration conf;
	OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);

	std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
	*content << picstream.str();
	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 << "CreateBucket fail" <<
			",code:" << outcome.error().Code() <<
			",message:" << outcome.error().Message() <<
			",requestId:" << outcome.error().RequestId() << std::endl;
		ShutdownSdk();
		return;
	}else
	{
		cout << "send successful! " << endl;
	}
	/* 释放网络等资源 */
	ShutdownSdk();
	return;

}

int main()
{
	//本地上传
	String picname = "filename.jpg";
	uploadoss(picname);
	
	//内存上传
	stringstream liu;
	for(int i=0;i<10;i++)
	{
		liu<<i;
	}
	//至此,信息已经在这个sstream流里;
	String picname2 = "1.txt";
	uploadoss(picname2,liu);
	
	return 0;
}

至此。成功上传oss
在运行文件目录下添加下面两个dll,否则会弹出缺少dll
如:Debug目录下
在这里插入图片描述
下面再给一个QT使用oss的配置教程:
注意要版本一致。和vs使用类似,我就不多说了。
我就只讲配置使用的部分:
需要添加4个lib和3个文件使用路径:
在这里插入图片描述
在这里插入图片描述

下面给一个pro:

#-------------------------------------------------
#
# Project created by QtCreator 2020-02-29T19:20:51
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = uposs
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui

//oss的导入目录
INCLUDEPATH += F:\vscode\osssdk\aliyun-oss-cpp-sdk-master\sdk\include \
               F:\vscode\osssdk\aliyun-oss-cpp-sdk-master\sdk\src \
               F:\vscode\osssdk\aliyun-oss-cpp-sdk-master\third_party\include


//下面是4个lib的导入信息。要在项目名右键添加外部库的方式添加。

win32:CONFIG(release, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -llibcurl
else:win32:CONFIG(debug, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -llibcurld
else:unix: LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -llibcurl

INCLUDEPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64
DEPENDPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64

win32:CONFIG(release, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -llibeay32
else:win32:CONFIG(debug, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -llibeay32d
else:unix: LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -llibeay32

INCLUDEPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64
DEPENDPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64

win32:CONFIG(release, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -lssleay32
else:win32:CONFIG(debug, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -lssleay32d
else:unix: LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64/ -lssleay32

INCLUDEPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64
DEPENDPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/third_party/lib/x64


win32:CONFIG(release, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/ossbuild/lib/release/ -lalibabacloud-oss-cpp-sdk
else:win32:CONFIG(debug, debug|release): LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/ossbuild/lib/debug/ -lalibabacloud-oss-cpp-sdk
else:unix: LIBS += -LF:/vscode/osssdk/aliyun-oss-cpp-sdk-master/ossbuild/lib/ -lalibabacloud-oss-cpp-sdk

INCLUDEPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/ossbuild/lib/Release
DEPENDPATH += F:/vscode/osssdk/aliyun-oss-cpp-sdk-master/ossbuild/lib/Release

我使用的例子是x64+release编译的。你们应用的时候需要生成所对应的阿里云oss-lib。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章