【问题标题】:Upload file into a random folder将文件上传到随机文件夹
【发布时间】: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


【解决方案1】:

一些建议...

  1. 您正在使用 v2 API。如果这是一个新应用程序,您可能应该切换到 v3。
  2. 您的 REST 调用正在请求子资源列表。如果您查看https://developers.google.com/drive/v2/reference/children,您会发现子资源中没有标题/名称。
  3. 实现您所寻找的更常见的方法是使用查询参数为 folder_id in parents 的 files.list。

【讨论】:

  • 就是这样,但我没有 folder_id ?如果要将新文件上传到任何文件夹,是否意味着folder_id也将是“root”?在parents中使用folder_id的查询参数做一个files.list。
  • 对不起,我不明白你的评论。
  • 哦,我的意思是父ID,当然,你不需要folder_id来上传一个或多个文件。
  • parent = 文件夹,所以 parent_id = folder_id
  • 没错,当您想在另一个文件夹中创建一个文件夹时,它工作得很好,但当您想将一个文件上传到任何给定文件夹时它不起作用.. 已经尝试了几天了。 ..不会放弃...
【解决方案2】:

是的,大错特错……直到现在。作为记录,任何上传,无论是文件还是文件夹,到任何位置,无论是根目录还是任何 RANDOM 文件夹,您都需要该特定文件夹的 folder_id。使用“root”作为根文件夹的 ID。要上传,您不需要 selfLink 或 parentLink。只是

parents:[{ "id" : "id of the folder, use root for root folder" }]

谢谢@pinoyyid。

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2012-05-10
    相关资源
    最近更新 更多