Qt客户端阿里云服上传文件

Posted 霍霍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt客户端阿里云服上传文件相关的知识,希望对你有一定的参考价值。

整体原理:

阿里云提供了c程序上传文件到阿里云服务器的sdk工具包,将这个工具包继承在自己的客户端,调用接口即可实现上传文件。

 

前期准备:

1、阿里云c程序客户端的sdk,下载地址:https://help.aliyun.com/document_detail/32131.html?spm=5176.doc32139.6.768.JIh6Dh (如果地址不对,可以在阿里云的帮助文档中找)

2、安装vs2010或以上版本,目的是为了编译生成oss_c_sdk.lib静态链接库

 

操作步骤:

1、将下载的文件解压并用vs2010打开,编译生成oss_c_sdk.lib文件(帮助文档有详细方法) 

2、将oss_c_sdk目录下的头文件(.h)放在自己工程的源代码目录下,并在工程中添加这些源文件 

3、在pro文件中添加库文件

LIBS += -lWS2_32 \\
        $$PWD/third_party/lib/Release/oss_c_sdk.lib

其中,

ws2_32是vs库中的文件,(我是win32下的程序,如果不是win32的程序,不用加)

oss_c_sdk可以自己放在合适的目录下,在pro中添加路径即可 

4、将所下载文件的third_party/include下的头文件放在源代码目录下,并在pro文件中引用相应目录

INCLUDEPATH += third_party/include \\
        third_party/include/apr \\
        third_party/include/mxml \\
        third_party/include/aprutil

这些文件是oss_c_sdk目录下的头文件需要引用的

5、将third_party\\lib\\Release下的dll放在项目的bin目录下,即exe所在目录,否则不能运行

6、参照所下载示例中的代码,即可完成文件上传,示例代码如下:

 1 int main(int argc, char *argv[])
 2 {
 3     if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
 4         exit(1);
 5     }
 6 
 7     put_object_sample();
 8     append_object_sample();
 9     get_object_sample();
10     head_object_sample();
11     multipart_object_sample();
12     delete_object_sample();
13     aos_http_io_deinitialize();
14 
15     system("pause");
16 
17     return 0;
18 }
View Code

 

注意事项:

1、win32一定要加上-lWS2_32否则编译不通过

2、注意要调用aos_http_io_initialize与aos_http_io_deinitialize函数,否则联网不成功

3、对于QString转换为char*的解决代码如下:

1     QString sMyfilename = "c:\\test.c";
2     QByteArray byteArray_filename = sMyfilename.toLatin1();
3     char* pchar_filename = new char[byteArray_filename.size() + 1];
4     strcpy(pchar_filename, byteArray_filename.data());
View Code

4、第三方库要用release目录下的dll,否则会有问题,debug目录下的反正没用过。

 

总结:

可以仔细阅读下阿里云的帮助文档,其中有很多源码和解决方案,很详细。

 

另:有问题欢迎交流O(∩_∩)O~

以上是关于Qt客户端阿里云服上传文件的主要内容,如果未能解决你的问题,请参考以下文章

QT 防止FTP 上传软件在断连处 Crash

Qt通过HTTP POST上传文件

阿里云oss上传文件

阿里云视频上传实战

java Ftp上传创建多层文件的代码片段

mac 使用scp命令,实现将本地文件上传到阿里云服务器