Pergunta

Alguém sabe como postar arquivo usando o CURL nos documentos do Google. Eu escrevo este código:

$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);    

E funciona bem apenas se eu usar o tipo de conteúdo simples/de texto com arquivos de texto, mas se meu arquivo enviado no modo binário, obtive 417 código de erro HTTP, por exemplo, com documentos PDF.

Estou tentando mudar esta linha

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

Para isso

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

Mas eu tenho 417 código de erro de resposta novamente. Somente com a resposta simples/de texto é 201.

Exemplo dos documentos do Google Carregar cabeçalhos de fonte oficial

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 ...
Foi útil?

Solução

Verificação de saída Este artigo. Ele fornece uma ótima redação sobre como usar o CRO, incluindo como postar variáveis. Não tenho certeza de como usar isso com o Google Docs, mas, desde que você esteja seguindo as instruções deles, isso deve ajudá -lo a descobrir seu problema de postagem VAR.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top