2010-02-15 8 views
4

Toute personne sait comment publier un fichier en utilisant curl pour les documents google. je vous écris ce code:API Google Docs. Télécharger le fichier en utilisant curl

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

Et cela fonctionne très bien que si j'utiliser le contenu de type simple/texte avec des fichiers texte, mais si mon fichier téléchargé en mode binaire i obtenu 417 http code d'erreur, par exemple en pdf documents.

J'ai essayer changement cette ligne

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

Pour ce

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

Mais j'ai le code d'erreur 417 de réponse à nouveau. Seulement avec une réponse simple/texte est 201.

Exemple des en-têtes de téléchargement de documents Google de official source

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 ... 

Répondre

1

Check out this article. Il donne un bon résumé sur la façon d'utiliser CURL, y compris comment poster des variables. Je ne suis pas sûr de savoir comment l'utiliser avec google docs, mais tant que vous suivez leurs instructions, cela devrait vous aider à comprendre votre problème post var.

+0

J'ai vu cet article avant, il montre seulement comment poster des varables mais pas les fichiers :( – antyrat

+0

Ahh shoot, bien essayer ce lien - il fait partie des pages de manuel CURL: (http: //www.cs.sunysb .edu/documentation/curl/index.html) regardez sous l'en-tête "POST (HTTP)" où ils discutent de déplacer le fichier "cooltext.txt" Cela pourrait aider un peu. – Shane