如何在google-drive上获取所有文件夹的列表及其名称

时间:2013-06-21 12:50:30

标签: qt google-drive-api google-drive-realtime-api

我在qt / c ++中创建一个应用程序,我想将图像上传到一个特定的文件夹。我试图获取所有文件夹的列表,但它没有提供我的文件夹名称。我想得到他们的名字,以便用户可以从文件夹列表中选择一个特定的文件夹,我可以上传到该特定文件夹。我的代码:http://pastebin.com/dBGkpeEj作为对此代码的回应,我得到了kind,etag,selflink和items数组,其中每个项目都有foll。田:一种=驱动#childReference,ID,selflink,childlink。我想得到所有文件夹的名称
我自己解决了。这是获取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);

}

1 个答案:

答案 0 :(得分:2)

首先,如果您要与用户交互以从云端硬盘中选择特定文件或文件夹,请使用Google Picker。实现自己的选择器是非常低效和缓慢的。只需几行javascript代码,您就可以完全按照自己的意愿行事。

其次,您使用的是child.list,它没有提供足够的文件信息。您应该使用Files.list()与查询mimeType = 'application/vnd.google-apps.folder' and trashed = false,然后您将获得所需的所有文件夹信息。

第三,你忘了实现pageToken。对于拥有大量文件/文件夹的某些用户,他们可能会点击maxResults,查询可能无法显示您想要的所有文件/文件夹。请深入了解示例代码。