Содержимое загруженного файла отсутствует на Google Диске

0

Информация:

Я сделал короткую пробную версию, в которой я загружаю файл на Google Диск, используя учетные данные учетной записи службы. Поскольку учетная запись службы не имеет пользовательского интерфейса диска (загрузка API Google Диска возвращает файл ID/Название, но документ не существует на Диске), я добавил разрешения для своей учетной записи. Это прекрасно работает. Но когда я открываю файл в Документах Google, я не вижу содержимое загруженного мной файла. Ниже мой код. В файле я хочу загрузить контент "Hello World!". но этого нет в документе на Google Диске. Есть какие нибудь идеи как это починить?

        function insertFile($service, $title, $description, $parentId, $mimeType, $fileName) {
            print "<br/>Uploading file...<br/>";
            $file = new Google_Service_Drive_DriveFile();
            $file->setTitle($title);
            $file->setDescription($description);
            $file->setMimeType($mimeType);

            // Set the parent folder
            if ($parentId != null) {
                $parent = new Google_Service_Drive_ParentReference();
                $parent->setId($parentId);
                $file->setParents(array($parent));
            }

            try {
                $data = file_get_contents($fileName);

                $createdFile = $service->files->insert($file, array(
                    'data' => $data,
                    'mimeType' => $mimeType
                ));

                $newFileId = $createdFile->getId();

                // Give permission to my email so I can see the file in my Drive UI
                $myEmail = "<mygmail>";
                $userType = "user";
                $userRole = "writer";
                insertPermission($service, $newFileId, $myEmail, $userType, $userRole);

                print "<br/>File uploaded successfully!";
                downloadFile($service, $newFileId);
            } catch (Exception $e) {
                print "<br/>An error occurred: " . $e->getMessage();
            }
        }

        function insertPermission($service, $fileId, $userToPermit, $typeOfUser, $role) {
            $newPermission = new Google_Service_Drive_Permission();
            $newPermission->setValue($userToPermit);
            $newPermission->setType($typeOfUser);
            $newPermission->setRole($role);
            try {
                return $service->permissions->insert($fileId, $newPermission);
            } catch (Exception $e) {
                print "<br/>Error occurred while attempting to permit " . $userToPermit . " to file.<br/>" . $e->getMessage();
            }
            return null;
        }

        $docTitle = "UploadTest4.txt";
        $docMimeType = "text/plain";
        $docToUpload = "document.txt";
        insertFile($service, $docTitle, null, null, $docMimeType, $docToUpload);
Теги:
file-upload
google-api-php-client

1 ответ

0
Лучший ответ

Не нашел этот пост раньше, но я попробовал предоставленное решение, и оно работает для меня (а не для оригинального плаката как ни странно). Мне пришлось добавить параметр uploadType в запрос на вставку.

uploadType => 'media'

файл, загруженный с пустым контентом, с помощью google drive php api

Ещё вопросы

Сообщество Overcoder
Наверх
Меню