2013-01-01 52 views
1

我的最终目标是允许用户上传一些内容到他们个人帐户中的谷歌驱动器文档。Google Drive Api - PHP - 上传word doc - 400错误的请求

我正在使用https://developers.google.com/drive/v2/reference/files/insert#examples上提供的PHP示例。上传简单的文本文件时,它可以正常工作。

然后(在用mimetype application/msword浪费了将近8小时后,不知道为什么这些文档不能让它更容易找到这样的共同细节)。我将mimetype改为application/vnd.google-apps.document有空数据的,它工作得很好。

然后,我在谷歌驱动器Web界面上创建了一个doc文件,然后将其导出到我的机器上。它被保存为docx。然后在这个例子中,这个文件被用作数据源,我不断收到错误调用POST https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart:(400)错误的请求错误。

错误消息甚至没有提供关于请求的错误的更多细节。

[responseBody:protected] => { 
    "error": { 
    "errors": [ 
     { 
     "domain": "global", 
     "reason": "badRequest", 
     "message": "Bad Request" 
     } 
    ], 
    "code": 400, 
    "message": "Bad Request" 
    } 
} 
+0

你想创建一个Google文档或二进制MSWord文件吗?当你离开mime类型时会发生什么? –

+0

用户拥有存储在数据库中的简单格式化文本(javascript wsgi编辑器)。用户应该能够创建一个空的谷歌文档或新的谷歌文档,其中包含格式化文本。 – MavWolverine

+0

更新:如果我离开mimetype,代码工作正常。但是,我无法编辑该文件。 '无法预览 此产品是使用我的应用测试,一款Google云端硬盘应用创建的。 下载这个文件,或者使用您已经安装的应用程序之一来打开它.' – MavWolverine

回答

0

你可能必须把Word文件的内容作为一个字符串到$请求[“内容”]

如果是.DOCX正确的MIME类型是:

application/vnd.openxmlformats-officedocument.wordprocessingml.document 

参考:MSDN Library

嘛,怎能一个告诉的反应出了什么问题,但不能产生它的要求吗?

你很可能刚才写“HTTP400 - 废话不工作”,而不是,

这将提供约等量的信息。

HTTP响应码#400一般手段,

HTTP请求格式错误(例如缺少参数,未正确转义等)。

^...这当然是正确的答案 - 根据采样响应

而这正是所提供的信息不足以为您提供直接答案的原因。我也希望API在响应中有更多的细节(特别是偶尔出现的文件验证错误) - 因为有时候人们只能猜测“另一边”出了什么问题。

最佳做法是从一个非常简单的工作版本开始,然后添加一些复杂性。

如果您希望查看/解决问题,您应该添加样品申请

甚至不管代码的外观如何 - 当请求显然格式错误时。

普通我提供网页脚本作为服务,目前只是有点资源外。

+0

Google驱动器文档提到了不同的mimetype(application/vnd.google-apps.document)https://developers.google.com/drive/mime-types – MavWolverine

+0

$ file = new Google_DriveFile(); $ file-> setTitle($ title); $ file-> setMimeType('application/vnd.openxmlformats-officedocument.wordprocessingml.document'); // $ file-> setMimeType($ MIMETYPE); $ data =''; ($文件,数组( 'data'=> $ data)); – MavWolverine

+0

我在谷歌驱动器上创建了一个文件并下载了它。将文件内容添加为$ data并使用您指定的mimetype。它正在工作,但它不可编辑。 – MavWolverine