2011-04-06 11 views
5

¿Hay alguna manera de utilizar el curl de PHP para enviar múltiples archivos en una única solicitud?Escribir varios archivos en una sola solicitud CURL

entiendo que puede enviar un único archivo haciendo uso de lo siguiente:

$fh = fopen("files/" . $title . "/" . $name, "w"); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, trim($url)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_FILE, $fh); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"); 
curl_exec($ch); 
echo curl_error($ch); 
curl_close($ch); 

Pero yo quiero ser capaz de escribir digamos que 3 archivos a través de una sola solicitud.

¿Existe alguna forma de escribir bytes en la solicitud antes del curl_exec()?

Respuesta

8

Un ejemplo completo sería algo como esto:

<?php 
$xml = "some random data"; 
$post = array(
    "uploadData"=>"@/Users/whowho/test.txt", 
    "randomData"=>$xml, 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, trim("http://someURL/someTHing")); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"); 
curl_exec($ch); 
echo curl_error($ch); 
curl_close($ch); 


?> 
+1

Esto no funcionará si está usando PHP 5.5+. En su lugar, debe hacer esto: http://stackoverflow.com/a/29122849/112192 – Jaffer

5

Puede utilizar esta

$post = array(
    "file1"=>"@/path/to/myfile1.jpg", 
    "file2"=>"@/path/to/myfile2.jpg", 
); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
+0

hizo el truco. Gracias. – Koekiebox

Cuestiones relacionadas