Google Docs API. Загрузить файл с помощью curl - PullRequest
4 голосов
/ 15 февраля 2010

Кто-нибудь знает, как опубликовать файл с помощью curl в документах Google. Я пишу этот код:

$header[] = "Authorization: GoogleLogin auth=seсretkey";
$header[] = "Content-Type: application/pdf";
$header[] = "Slug: testdoc";
$header[] = "Content-Length: ".$_FILES['file']['size']."";
$url = "http://docs.google.com/feeds/documents/private/full";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);            
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($_FILES['file']['tmp_name']));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);    

И это работает нормально, только если я использую обычный / текстовый тип содержимого с текстовыми файлами, но если мой загруженный файл в двоичном режиме, я получил код ошибки 417 http, например, с документами pdf.

Я пытаюсь изменить эту строку

curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($_FILES['file']['tmp_name']));

К этому

curl_setopt($ch, CURLOPT_POSTFIELDS, array("file"=>"@".$_FILES['file']['tmp_name']));

Но я снова получил код ошибки ответа 417. Только с простым / текстовым ответом - 201.

Пример заголовков загрузки документов Google из официального источника

POST /feeds/documents/private/full HTTP/1.1
Host: docs.google.com
Authorization: <your authorization header here>
Content-Length: 81047
Content-Type: application/vnd.ms-excel
Slug: Example Spreadsheet

... spreadsheet contents here ...

1 Ответ

0 голосов
/ 15 февраля 2010

Оформить эту статью . Это дает отличную информацию о том, как использовать CURL, в том числе о том, как размещать переменные. Я не уверен, как использовать это с Google Docs, но если вы будете следовать их инструкциям, это поможет вам выяснить вашу проблему после публикации.

...