2013-06-21 32 views
0

我正在qt/c + +的應用程序,我想上傳圖像到一個特定的文件夾。我試圖獲得所有文件夾的列表,但它沒有提供我的文件夾名稱。我想獲取他們的名字,以便用戶可以從文件夾列表中選擇一個特定的文件夾,並且我可以上傳到該特定文件夾。我的代碼:http://pastebin.com/dBGkpeEj作爲對此代碼的迴應,我獲得了kind,etag, selflink和items數組,其中每個項目都有foll。田:一種=驅動#childReference,ID,selflink,childlink。我想獲得的所有文件夾
我得到了它的myself.Here代碼解決獲得Qt中所有文件夾和子文件夾列表中的名稱:如何獲得所有文件夾的名稱與他們的名字在谷歌驅動器(解決)

void googled::tryFolderListing(QNetworkReply *reply){ 
am = new QNetworkAccessManager; 

QByteArray d = reply->readAll(); 
QString x = getValue(d,"access_token"); 
x = "Bearer " + x; 
QUrl url("https://www.googleapis.com/drive/v2/files"); 
url.addQueryItem(QString("q").toAscii(),QString("mimeType = 'application/vnd.google-apps.folder'").toAscii()); 
QNetworkRequest request; 
request.setUrl(url); 
request.setRawHeader(QString("Content-Type").toAscii(),QString("application/json").toAscii()); 
request.setRawHeader(QString("Authorization").toAscii(),x.toAscii()); 
QObject::connect(am, SIGNAL(finished(QNetworkReply *)), 
this, SLOT(uploadfinishedSlot(QNetworkReply *))); 
am->get(request); 

}

回答

2

首先,如果你與用戶交互要從Drive中選擇特定的文件或文件夾,請使用Google Picker。實現你自己的選擇器是非常低效和緩慢的。只有幾行javascript代碼,你可以做到你想要的。

其次,您正在使用children.list,它沒有提供足夠的文件信息。您應該使用Files.list()與查詢mimeType = 'application/vnd.google-apps.folder' and trashed = false,你會得到所有你想要的文件夾信息。

三,你忘了實現pageToken。對於有很多文件/文件夾的用戶,他們可能會打maxResults,並且查詢可能不會顯示您想要的所有文件/文件夾。請深入瞭解示例代碼。

+0

修改代碼後,我發送一個GET請求到這個網址:https://www.googleapis.com/drive/v2/files Q = mime類型%3D%27application%2Fvnd.google-apps.folder 27%,但我得到foll。錯誤:「{ 」錯誤「:{ 」錯誤「: { 」域「: 」全局「, 」理由「: 」無效的「, 」消息「: 」無效值「, 」的locationType「 : 「參數」, 「位置」: 「q」 } ], 「代碼」:400, 「消息」: 「無效值」 } } 「我的代碼:HTTP://pastebin.com/7B8vKFnX @JunYoung Gwak另外我不能使用谷歌選擇器爲我的應用程序 – saurabh

+0

錯誤消息說,您的查詢參數,q,格式錯誤。在代碼中查詢沒有問題。這可能意味着你沒有正確解析url。當您正確解析它時,您的查詢應該如下所示:GET https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application%2Fvnd.google-apps.folder'&key={YOUR_API_KEY }'我不擅長QT,所以這是我能幫助你的最好的。 –

+0

我是否需要關鍵參數,因爲我已經在標頭中傳遞訪問令牌 – saurabh

相關問題