Google Drive SDK(PHP客户端库) - 上传文件但在Google云端硬盘UI上无法读取

时间:2012-08-08 14:43:08

标签: php google-docs google-docs-api google-drive-api

以下是我上传文件的代码:

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(),
    ));

}

当我使用此PHP代码上传例如docx时,该文件在Google云端硬盘网站上显示为不可读(它显示了docx的XML结构),并且它在我的Google云端硬盘文件夹中显示如下:< / p>

unreadable

当我尝试通过Google云端硬盘UI直接上传docx时,它就会显示出来(我想要的): readable

  

我很确定这个问题来自Google的事实   Drive UI尝试以不同的方式打开文件,因为我上传了   它通过我的应用程序,但我不希望这样:)

(我和其他类型的文件有同样的问题)


我尝试在数组中设置参数'convert' = true但是在上传过程中我遇到了这个错误:

  

..转换=真安培; uploadType =多&安培;键= AI39si49a86oqv9fhb9yzXp7FCWL-cSqwFiClHZ qS3Y3r9Hw8ujtSNlZEWZyFKBp_id7LUyFaZTJ97pMeb0XqHznycK7JJ9o_Q:   (500)内部错误

文档:https://developers.google.com/drive/v2/reference/files/insert

=&GT;但无论如何我不认为转换是正确的解决方案,我只是希望能够看到内容,就好像我通过Google Drive UI上传文件


如果我从我的Google云端硬盘同步文件夹中打开docx并进行编辑和保存,我将能够通过Google云端硬盘用户界面看到它(显示W徽标)

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题。

但不同之处在于,我正在上传pdf并能够在google drive UI中查看pdf。

我需要在添加新的pdf后通过api代码自动将其转换为google doc格式。

如果我更改$ mimeType ='application / vnd.google-apps.document';然后得到以下错误
https://www.googleapis.com/upload/drive/v2/files?convert=true&uploadType=multipart :( 400)错误请求

如果我添加可选参数

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

然后没有变化,只有pdf上传没有发生转换。

你有什么建议吗,我需要准确添加转换参数吗?