Я разрабатываю функцию «загрузка файла в папку Google Диска», используя библиотеку С++/Poco.
Файл всегда загружается только в корневую папку
Я добавил необязательный параметр parent, как показано ниже.
std::string strParents = "[ { "id": "" + std::string(locationId) + ""} ]"
Код, который я использую в настоящее время, приведен ниже, и он загружается только в корневую папку.
Poco::URI uri("https://www.googleapis.com/upload/drive/v3/files");
uri.addQueryParameter("uploadType", "resumable");
uri.addQueryParameter("supportsAllDrives", "true");
uri.addQueryParameter("name", targetFilePath.filename().string());
uri.addQueryParameter("description", "file from sdk");
uri.addQueryParameter("properties", metaData);
std::string strParents = "[ { \"id\": \"" + std::string(locationId) + "\"} ]";
uri.addQueryParameter("parents", strParents);
Poco::Net::HTTPRequest* req = new Poco::Net::HTTPRequest(Poco::Net::HTTPRequest::HTTP_POST, uri.toString(), Poco::Net::HTTPMessage::HTTP_1_1);
req->add("Authorization", std::string("Bearer ") + accessToken);
req->add("Content-Type", "application/json; charset=UTF-8");
req->add("X-Upload-Content-Type", "application/octet-stream");
req->add("X-Upload-Content-Length", std::to_string(iFileSize));
//req->add("parents", std::string("[{\"id\":\"") + locationId + std::string("\"}]"));
req->add("parents", strParents); // added here also as a trial
Какой бы формат я ни установил для параметра родителей, он загружается только в корневую папку.
Специалист, работавший над этим функционалом, легко разберется в этом моменте. Пожалуйста, не убивайте хорошие вопросы
Метаданные файла не должны загружаться как addQueryParameter.
Это именно та помощь, которая мне нужна. Как добавить метаданные
это должно быть в теле сообщения. Я удивлен, что какие-либо метаданные вставляются.
Я гуглил, но не видел, как добавить тело сообщения в С++. Любой образец или ссылка будет большим подспорьем





Я нашел проблему. Проблема связана с использованием Poco.
Это для тех разработчиков, которые борются, как я.
«родители» должны быть добавлены как объект массива. Не как один объект ключ-значение
если я добавлю, как показано ниже
fileDataObject.add("родители", "[id]");
его принятие как единственное значение. Когда я упорядочиваю тело сообщения, значение родителей появляется, как показано ниже.
parents : "[ *id* ]"
но это должно прийти как
parents : [ *id* ]
Затем я добавил его как объект массива, как показано ниже.
Poco::JSON::Object fileDataObject;
Poco::JSON::Array parents;
parents.add(parentId);
fileDataObject.set("name", targetFilePath.filename().generic_wstring());
fileDataObject.set("parents", parents);
Это даже близко не SSCCE.