0

Я хочу, чтобы пользователи загружали файл на Google Диск, но не в корневой каталог. Ресурс «Дети» позволяет только перечислять папки из корня (что имеет смысл), но не помещает имя папок в ответ 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. Из моего изучения документов google-диска требуется файл с идентификатором папки, прежде чем вставлять его можно. И у меня нет идентификатора folderID для нового файла, который будет загружен.

+0

Мне нужно будет показать нам, что вы пробовали, и описать любые проблемы, которые у вас возникают с вашим текущим решением. Пожалуйста, прочитайте http://stackoverflow.com/help/how-to-ask – DaImTo

+0

Спасибо. Я запросил список корневых дочерних папок. Вопрос был переиздан. –

ответ

0

Да, было совсем не так ... до сих пор. Для записи любой загрузки, будь то файл или папка, в любое место, будь то root или любая папка RANDOM, вам понадобится папка_ид этой конкретной папки. Используйте «root» как id для корневой папки. И для загрузки вам не нужен selfLink или parentLink. только

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

Спасибо @pinoyyid.

0

Несколько указателей ...

  1. Вы используете v2 API. Если это новое приложение, вероятно, вы должны перейти на v3.
  2. Ваш звонок REST запрашивает список ресурсов для детей. Если вы посмотрите на https://developers.google.com/drive/v2/reference/children, вы увидите, что в дочернем ресурсе нет названия/имени.
  3. Более общий способ добиться того, что вы ищете, - это сделать файл.list с параметром запроса folder_id in parents.
+0

Thats the thing, но у меня нет folder_id?. Если для нового файла, который будет загружен в любую папку, означает ли это, что folder_id также будет «root» ?, чтобы сделать файл.list с параметром запроса folder_id в родителях. –

+0

Извините, я не понимаю вашего комментария. – pinoyyid

+0

О, То, что я имел в виду, было родительским идентификатором. Естественно, вам не нужна папка_id для загрузки файла или файлов. –