Я знаю о двух предыдущих сообщениях:
- PHP API Google Диска - Загружать файл только как файл без названия или просто без содержания
- Google Drive PHP SDK сохраняет файл без названия
Но кроме ответа «Вы уверены, что используете последнюю версию?», никто из спрашивающих не вернулся, чтобы сказать, да или нет, или удалось ли им найти ответ.
Поскольку я делаю то же самое, что и они, я использую последнюю версию apiDriveService.php с последней версией, датированной июнем 2012 года.
Данные найдены правильно, но когда вы доходите до строки вставки, явно происходит что-то не так.
И я не понимаю, почему для примера SDK php он вроде идет правильно.
Это проблема в консоли Google Api? Или мне нужно кодировать данные во что-то особенное?
РЕДАКТИРОВАТЬ: в файле apiDriveService я вижу эту строку:
$this->files = new FilesServiceResource($this, $this->serviceName, 'files', json_decode('{"methods": {
"insert": {"scopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file"],
"parameters": {"convert": {"default": "false", "type": "boolean", "location": "query"}, "targetLanguage": {"type": "string", "location": "query"}, "sourceLanguage": {"type": "string", "location": "query"}, "ocrLanguage": {"type": "string", "location": "query"}, "pinned": {"default": "false", "type": "boolean", "location": "query"}, "ocr": {"default": "false", "type": "boolean", "location": "query"}, "timedTextTrackName": {"type": "string", "location": "query"}, "timedTextLanguage": {"type": "string", "location": "query"}}, "supportsMediaUpload": true, "request": {"$ref": "File"}, "mediaUpload": {"maxSize": "10GB", "accept": ["*/*"], "protocols": {"simple": {"path": "/upload/drive/v2/files", "multipart": true}, "resumable": {"path": "/resumable/upload/drive/v2/files", "multipart": true}}}, "id": "drive.files.insert", "httpMethod": "POST", "path": "files", "response": {"$ref": "File"}}, ...);
В параметрах, которые я отправляю, есть data и mimetype:
$created = $apiService->files->insert($driveFile, array('data' => $data,'mimeType' => $mimeType));
И в функции вставки есть array_merge с данными и mimetype:
public function insert(DriveFile $postBody, $optParams = array()) {
$params = array('postBody' => $postBody);
$params = array_merge($params, $optParams);
$data = $this->__call('insert', array($params));
if ($this->useObjects()) {
return new DriveFile($data);
} else {
return $data;
}
}
Я не нахожу их в части вставки строки, которую я упомянул выше. Это связано с этим?