【发布时间】:2016-12-13 09:39:16
【问题描述】:
我希望用户将文件上传到 Google 云端硬盘,而不是根目录。 Children 资源只允许从根目录列出文件夹(这是有道理的),但不会将文件夹的名称放在 JSON 响应中。
我不能使用父资源,因为 fileID 不存在,还因为我需要用户查看文件夹(在他们各自的层次结构中)并选择他们选择的文件夹。这是我到目前为止所尝试的
void DriveClass::listFileFolderDrive(const QString& folderID){
QUrl url("https://www.googleapis.com/drive/v2/files/" + folderID + "/children");
//qDebug()<<" url for About Drive: "<< url;
QNetworkRequest* request = new QNetworkRequest( url );
request->setHeader( QNetworkRequest::ContentTypeHeader, "application/json" );
request->setRawHeader( "Authorization", QString( "Bearer %1" ).arg( this->_oAuth2->token() ).toLatin1() );
QNetworkReply* reply = m_networkManager->get(*request);
bool result = connect(reply, SIGNAL(finished()), this, SLOT(onlistFileFolderDriveFinished()));
Q_ASSERT(result);
Q_UNUSED(result);
}
其中 folderID 是“root”。我得到的回应是:
QVariant(QVariantMap, QMap(("etag", QVariant(QString, ""dyf6dc5nFpQUIZ2nJvOu2LyLJk8/bD3mjJonFeCjTc8Eu8VRx_DzPtg"") ) ( "items" , QVariant(QVariantList, (QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_Ycab1hhT3I0T3ptMDg") ) ( "id" , QVariant(QString, "0B_0rcYNi_Ycab1hhT3I0T3ptMDg") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_Ycab1hhT3I0T3ptMDg") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_YcabXdJd21CeWRHUXM") ) ( "id" , QVariant(QString, "0B_0rcYNi_YcabXdJd21CeWRHUXM") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_YcabXdJd21CeWRHUXM") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_YcaM1ZCOXBaZzJSNmc") ) ( "id" , QVariant(QString, "0B_0rcYNi_YcaM1ZCOXBaZzJSNmc") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_YcaM1ZCOXBaZzJSNmc") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_YcaSmtNMmRlTld5QkU") ) ( "id" , QVariant(QString, "0B_0rcYNi_YcaSmtNMmRlTld5QkU") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_YcaSmtNMmRlTld5QkU") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_YcaY0I0czA4djNLT1U") ) ( "id" , QVariant(QString, "0B_0rcYNi_YcaY0I0czA4djNLT1U") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_YcaY0I0czA4djNLT1U") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_YcaTW8zZklsNnFNTDBmQ1dodi1yTFhqX2s4SzNr") ) ( "id" , QVariant(QString, "0B_0rcYNi_YcaTW8zZklsNnFNTDBmQ1dodi1yTFhqX2s4SzNr") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_YcaTW8zZklsNnFNTDBmQ1dodi1yTFhqX2s4SzNr") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/1_eVyijBnZPvFfn4WewtScnlSXRFpXInmop-AUD6Jp5nSV4rnxL4-IpLZ6uoR") ) ( "id" , QVariant(QString, "1_eVyijBnZPvFfn4WewtScnlSXRFpXInmop-AUD6Jp5nSV4rnxL4-IpLZ6uoR") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/1_eVyijBnZPvFfn4WewtScnlSXRFpXInmop-AUD6Jp5nSV4rnxL4-IpLZ6uoR") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/0B_0rcYNi_YcaYmNmZTEwMzYtNjgzZC00MjJkLWFmYWQtZmRlODc4OTEwZTVh") ) ( "id" , QVariant(QString, "0B_0rcYNi_YcaYmNmZTEwMzYtNjgzZC00MjJkLWFmYWQtZmRlODc4OTEwZTVh") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/0B_0rcYNi_YcaYmNmZTEwMzYtNjgzZC00MjJkLWFmYWQtZmRlODc4OTEwZTVh") ) ) ) , QVariant(QVariantMap, QMap(("childLink", QVariant(QString, "https://www.googleapis.com/drive/v2/files/1CHu3CzJ23I6WS3J8rOIpT5szN8r8mTOxztiWixwXafQ") ) ( "id" , QVariant(QString, "1CHu3CzJ23I6WS3J8rOIpT5szN8r8mTOxztiWixwXafQ") ) ( "kind" , QVariant(QString, "drive#childReference") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/0AP0rcYNi_YcaUk9PVA/children/1CHu3CzJ23I6WS3J8rOIpT5szN8r8mTOxztiWixwXafQ") ) ) ) ) ) ) ( "kind" , QVariant(QString, "drive#childList") ) ( "selfLink" , QVariant(QString, "https://www.googleapis.com/drive/v2/files/root/children") ) ) )
我希望这已经足够清楚了。我在 QVariant 中对其进行了解析,以便在 ListView 中使用结果。根据我对谷歌驱动器文档的研究,需要一个文件具有一个文件夹 ID,然后才能实现插入。而且我没有要上传的新文件的文件夹 ID。
【问题讨论】:
-
我需要向我们展示您的尝试并描述您在当前解决方案中遇到的任何问题。请阅读stackoverflow.com/help/how-to-ask
-
谢谢。我已请求根子文件夹的列表。该问题已重新编辑。
标签: c++ google-drive-api qt4 blackberry-10 google-drive-realtime-api