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。

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