整體原理:
阿里雲提供了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 }
注意事項:
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());
4、第三方庫要用release目錄下的dll,否則會有問題,debug目錄下的反正沒用過。
總結:
可以仔細閱讀下阿里雲的幫助文檔,其中有很多源碼和解決方案,很詳細。
另:有問題歡迎交流O(∩_∩)O~