2013-06-21 1 views
0

Я делаю приложение в qt/C++, и я хотел загрузить изображения в определенную папку. Я пытался получить список всех папок, но он не предоставляет мне имена folder.I хотел получить их имена, чтобы пользователь мог выбрать конкретную папку из списка папок, и я мог бы загрузить в эту конкретную папку. Мой код: http://pastebin.com/dBGkpeEj В ответ на этот код я получаю добрый, etag, selflink и array, в котором каждый элемент имеет foll. поля: вид = привод # childReference, идентификатор, selflink, childlink. Я хочу, чтобы получить имя всех папок
Я получил его решить с помощью кода myself.Here, чтобы получить список всех папок и подпапок в Qt:Как получить список всех папок с их именем на google-диске (решено)

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

-первых, если вы взаимодействуете с пользователем для выбора определенного файла или папки с Диска используйте Google Picker. Реализация вашего собственного сборщика очень неэффективна и медленна. И только с несколькими строками кода javascript вы можете делать именно то, что хотите.

Во-вторых, вы используете children.list, который не предоставляет достаточную информацию для файлов. Вы должны использовать Files.list() с запросом mimeType = 'application/vnd.google-apps.folder' and trashed = false, и вы получите всю информацию о папке, которую хотите.

В-третьих, вы забыли реализовать pageToken. Для некоторых пользователей, у которых много файлов/папок, они могут пострадать от maxResults, и запрос может не отображать все файлы/папки, которые вы хотите. Пожалуйста, обратите внимание на примеры кода.

+0

После изменения кода я отправил запрос на получение этого URL-адреса: https: //www.googleapis.com/drive/v2/files? Q = mimeType% 3D% 27application% 2Fvnd.google-apps.folder% 27, но я получить foll. Ошибка: "{ "ошибка": { "ошибки": [ { "домен": "глобальное", "причина": "недействительные", "сообщение": "Invalid Value", "locationType" : "параметр", "место": "д" } ], "код": 400, "сообщение" : "Invalid Value" }} "Мой код: HTTP: //pastebin.com/7B8vKFnX @JunYoung Gwak Также я не могу использовать google picker для своего приложения – 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