0
我試圖使用PHP和cURL從Google Drive中的XLS創建電子表格。我成功創建了.doc文檔,我可以從.csv創建電子表格,但是當我嘗試從xls文件創建文檔時,它只是以「文件」的形式保存在Google Drives中,無需預覽,並且只能下載它。使用PHP和cURL通過Google電子表格API創建XLS電子表格
我用下面的代碼來啓動可恢復上傳:
$curl = curl_init();
$upload_href = 'https://docs.google.com/feeds/upload/create-session/default/private/full'; // I'm actually taking the upload href from document listing
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$filename = 'MyFile';
$type = 'spreadsheet';
$content_type = 'application/msexcel'; // I can use 'text/csv' here to upload csv files just alright
$body = '<?xml version="1.0" encoding="UTF-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:docs="http://schemas.google.com/docs/2007"><category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/docs/2007#'.$type.'"/><title>'.$filename.'</title></entry>';
$headers = array(
"Authorization: GoogleLogin auth=" . $g_auth, // using ClientLogin
"GData-Version: 3.0",
"Content-Length: ".strlen($body),
"Content-Type: application/atom+xml",
"X-Upload-Content-Type: ".$content_type,
"X-Upload-Content-Length: ".$buffer_size // the size of the spreadsheet to be uploaded
);
curl_setopt($curl, CURLOPT_URL, $upload_href);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
curl_setopt($curl, CURLOPT_HEADER, true);
$response = curl_exec($curl);
// ...
// what follows is the start of resumable upload
谷歌電子表格API點,谷歌文檔API如何創建一個電子表格,但谷歌文檔API沒有指向具體的事情關於創建電子表格。
我想我在這裏所犯的錯誤是錯誤的ContentType,但我不知道在哪裏查找Google API接受的內容類型的有效列表。
這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – netcoder
@netcoder請閱讀Ethnar最近的聲明,他/她說他/他不知道在哪裏查找Google API接受的有效內容類型列表。我只是提供一個。如果這不是一個有用的答案,那麼請堅持我刪除它。謝謝 – Daydah
謝謝你的回答。我嘗試使用mime application/vnd.google-apps.spreadsheet,結果很奇怪。該文件上傳到谷歌文檔,但我收到消息「該網址的電子表格無法找到。」。當瀏覽谷歌驅動器上的文件時,我可以看到列表中的文件(如電子表格,這是一些成功),試圖查看它,我最終以相同的消息(未找到)。我會檢查以確保所有請求都正確地通過,Google文檔確認文件上傳成功。這個啞劇肯定讓我感覺到某個地方,再次感謝。 – Ethnar