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~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM