Вот мой код для загрузки файла:
private function addFile(File $file, $folderProject, User $user) {
$fileToUpload = new Google_DriveFile();
$fileToUpload->setTitle($file->getName());
//set mime type
$fileToUpload->setMimeType($file->getMimeType());
//build parent and set id
$parent = new Google_ParentReference();
$parent->setId($folderProject->getId());
//set parent to file
$fileToUpload->setParents(array($parent));
$data = file_get_contents($file->getPath());
$createdFile = $this->service->files->insert($fileToUpload, array(
'data' => $data,
'mimeType' => $file->getMimeType(),
));
}
Когда я загружаю, например, docx, используя этот PHP-код, файл добавляется так, чтобы его нельзя было прочитать на веб-сайте Google Drive (он показывает XML-структуру docx), и он отображается в моей папке Google Drive следующим образом:
И когда я пытаюсь загрузить docx напрямую через пользовательский интерфейс Google Диска, он выглядит следующим образом (что я хочу):
Я почти уверен, что проблема связана с тем, что пользовательский интерфейс Google Диска пытается открыть файл другим способом, потому что я загрузил его через свое приложение, но я этого не хочу :)
(у меня такая же проблема с другими файлами)
Я попытался установить параметр 'convert' = true
в массиве, но при загрузке у меня возникла ошибка:
..convert = true & uploadType = multipart & key = AI39si49a86oqv9fhb9yzXp7FCWL-cSqwFiClHZ qS3Y3r9Hw8ujtSNlZEWZyFKBp_id7LUyFaZTJ97pMeb0XJHz (500) Internal
Документация: https://developers.google.com/drive/v2/reference/files/insert
=> Но в любом случае я не думаю, что преобразование - правильное решение, я просто хочу иметь возможность видеть контент, как если бы я загрузил файл через пользовательский интерфейс Google Диска
Если я открою docx из папок Google Drive Sync, отредактирую и сохраню его, я смогу увидеть его через пользовательский интерфейс Google Диска (отображается с логотипом W)
convert=true
с вашим запросом на вставку: добавьте'convert' => TRUE
вarray
. - person Alain   schedule 08.08.2012