2010-08-08 20 views
17

Es trivial para obtener una imagen del servidor, pero creo que por algo diferente. Es una pregunta disparatada pero ... ¿Es posible enviar un archivo (imagen) a un servidor pero no usar la carga de formulario o la conexión ftp? Deseo enviar una solicitud a, por ej. http://www.example.com/file.php con contenido binario. Creo que tengo que configurar Content-type header image/jpeg, pero ¿cómo agregar algo de contenido a mi solicitud?CURL de PHP enviar la imagen

Respuesta

10

ver http://docs.php.net/function.curl-setopt:

CURLOPT_POSTFIELDS Los datos completos para publicar en una operación HTTP "POST". Para publicar un archivo, anteponga un nombre de archivo con @ y use la ruta completa. Esto se puede pasar como una cadena urlencoded como 'para1 = val1 & para2 = val2 & ...' o como una matriz con el nombre del campo como clave y datos de campo como valor. Si value es una matriz, el encabezado Content-Type se establecerá en multipart/form-data.
16

hay múltiples formas de usar curl para cargar archivos de imagen, por ejemplo:

$ch = curl_init(); 
$data = array('name' => 'Foo', 'file' => '@/path/to/image.jpeg'); 
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
//CURLOPT_SAFE_UPLOAD defaulted to true in 5.6.0 
//So next line is required as of php >= 5.6.0 
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_exec($ch); 

puede comprobar los ejemplos en: http://au.php.net/manual/en/function.curl-setopt.php

+0

Esto es lo que estaba buscando. ¡Gracias! –

+0

¡Gracias un ejemplo tan completo y conciso! –

+3

CURLOPT_SAFE_UPLOAD por defecto en verdad en 5.6.0 ... por lo que tendrá que añadir curl_setopt ($ ch, CURLOPT_SAFE_UPLOAD, false); antes de configurar CURLOPT_POSTFIELDS. – muglio

0

VolkerK es completamente correcto, pero mi experiencia sugiere que el envío de un archivo " @ "el operador solo trabajará con arreglos.

$post['file'] = "@FILE_Path" 

Ahora puede enviar el archivo utilizando CURLOPT_POSTFIELDS

+0

Este método ya no se recomienda. Ver: http://php.net/manual/en/class.curlfile.php – Erik