Моя цель: Чтобы загрузить файл sqlite с Google Drive с помощью Google Drive v3 rest api
Я работаю над проектом, который предусматривает загрузку файла sqlite, который хранится на диске Google. До сих пор я успешно авторизировал и получал токен доступа. Мне также повезло получить все имена файлов (файлы sqlite), хранящиеся на диске Google, с соответствующим идентификатором файла. Теперь я хочу скачать файл, используя идентификатор файла. Я следовал документации и отправляю запрос с идентификатором файла. Но все, что я получаю, это
{
"kind": "drive#file",
"id": "1AmaXWbtmkvihy1g9yoYSSCssgL4fVh6t",
"name": "_db.sqlite",
"mimeType": "application/octet-stream"
}
Это мой код:
bool File_Control::Download_File(const QString &FileName)
{
// Get FileID
QString FileID = m_Map.value(FileName, QString());
if(FileID.isEmpty()){
emit setMessage("Fatal Error: FileID is missing for FileName");
return false;
}
qDebug()<<"File ID "<<FileID;
// Now Prepare the request
QUrl url(tr("https://www.googleapis.com/drive/v3/files/%1").arg(FileID));
QUrlQuery query;
query.addQueryItem("alt","media");
url.setQuery(query.query());
QNetworkRequest request(url);
QString headerData = "Bearer " + m_Settings->get_Google_Drive_Settings
(Google_Drive::AccessTokenEnum);
request.setRawHeader("Authorization", headerData.toLocal8Bit());
QNetworkReply *reply = m_Account->get_Request(request);
// Now wait for the response
QTime t1 = QTime::currentTime().addMSecs(TIMEOUT);
while((t1>QTime::currentTime()) && (!reply->isFinished())){
QCoreApplication::processEvents();
}
if(reply->isFinished())
{
if(reply->error() != QNetworkReply::NoError){
emit setMessage("Error: "+reply->errorString());
delete reply;
return false;
}
else{
QByteArray array = reply->readAll();
qDebug()<<array<<reply->error();
delete reply;
return true;
}
}
else{
emit setMessage("Error: Timeout");
delete reply;
return false;
}
}
Я что-то упустил?
Редактировать 1:
m_Map -> QMap, в котором имена файлов (файлов с диска) хранятся в качестве ключа, а идентификатор файла - в качестве значения.
m_Settings -> Вспомогательный объект, который помогает в получении access_token, который хранится в реестре Windows
Google_Drive -> Тип перечисления помощника.
m_Account -> Объект, который помогает в авторизации аккаунта Google. Этот объект содержит мой QNetworkManager, поэтому я создал функцию get_Request для получения моего «запроса get»