2010-05-10 51 views
0

嗨,大家好我想上传到Google在谷歌应用程序文件帐户,使用下面的代码 - 我使用Zend框架:无法从php 400错误上传到谷歌文档!

function getGoogleClient($s = '') 
{ 
    $service = Zend_Gdata_Docs::AUTH_SERVICE_NAME; 

    $user = 'aaaaa'; 
    $pass = 'aaaaa'; 

    $httpClient = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service); 

    return $httpClient; 
} 

function uploadDocument($docs, $html, $originalFileName, $temporaryFileLocation) { 
    $fileToUpload = $originalFileName; 
    if ($temporaryFileLocation) { 
     $fileToUpload = $temporaryFileLocation; 
    } 

    $newDocumentEntry = $docs->uploadFile($fileToUpload, $originalFileName, null, Zend_Gdata_Docs::DOCUMENTS_LIST_FEED_URI); 

} 



$client = getGoogleClient(); 
$docs = new Zend_Gdata_Docs($client); 
$ls = uploadDocument($docs, true, $file->filename, $file->tmp_name); 

,但我不断收到此错误 - 什么是错在这里:(

Expected response code 200, got 400 Inconsistent repeating query parameter 
+0

此代码正在为我工​​作(调用'uploadDocument()','$ file-> tmp_name'为'null')。你的凭证是否正确?你可以通过web界面上传文档吗?你想上传什么样的文件?是另一个访问文档的程序(尝试关闭word或excel或openoffice)? – 2010-05-10 08:11:47

+0

null?我将它传递给它file-> tmp_name指上传文件的临时位置,如$ _FILES [tmp_name] – Ali 2010-05-10 10:47:28

+0

'null'用于调试,如果您的代码用于将本地文件上传到Google文档 - 您的代码位于php脚本,没有web服务器('$ _FILES [tmp_name]')。它所做的。所以你的问题在别的地方。无论是我上面提到的事情,还是在你的tmp文件处理中。 – 2010-05-10 14:43:02

回答

1

有一个“错误”,在Zend_Gdata_Docs与MIME类型。 如果您使用的是临时文件和文件名作为标题它不会自动神奇地拉MIME类型为您服务。它试图拉MIME类型基于临时文件中不存在的fileLocation扩展名。

我做了一个适合我的类,而不是更新Zend类。 它被称为ConvertDoc因为我希望能够upload a spreadsheet and download as csv.

你真正需要的是这样的......

// get mimetype from original file name 
    $filenameParts = explode('.', $originalFileName); 
    $fileExtension = end($filenameParts); 
    $mimeType = Zend_Gdata_Docs::lookupMimeType($fileExtension); 

而且通过$ MIME类型,而不是空的。