Comunidad de diseño web y desarrollo en internet online

enviar formulario con archivos a API REST con curl php

Citar            
MensajeEscrito el 18 Sep 2017 01:44 pm
Buenas a todos, estoy tratando de enviar un formulario con archivos a una API REST en curl con la version php 5.6, pero al momento de subir el archivo me envia un mensaje diciendo que algunos campos no han sido recibidos y la verdad ya he intentado de todo lo que se me ocurre (tambien con CurlFile) y nada. si alguien seria tan amable de guiarme estaria muy agradecido, saludos! anexo el codigo.

/*
se extrae el token
*/
$token = auth();

/*
se establecen los tipos MIME en la cabecera
*/
header('content-type: application/json');
header('content-lenght: 169');
header('x-gatekeeper-sessiontoken: '.$token);

/*
se crea un objeto curl
posteriormente se crea un file_curl
y por ultimo se crea un array con el id del lookuplist y el filecurl
*/
$handle = curl_init('https://www.url_de_la_api.com/api/lookuplist/?token='.$token);
$newData = array('id' => trim($data['ID']),'listname' => trim($data['LISTNAME'],'file' => '@'.realpath($data['FILE']).";filename=Contacts.csv");

print_r($newData);

/*
se establecen las opciones del objeto curl
*/
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_UPLOAD, 1);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $newData);

/*
se ejecuta el objeto curl y se guarda la respuesta
asi mismo tambien se capturan los errores en la ejecucion de curl en dado caso que existiesen
y se guarda la respuesta
*/
$response = curl_exec($handle);
$errors = curl_error($handle);

/*
se extrae el JSON de la respuesta de la ejecucion del objeto curl
*/
$responseJSON = json_decode($response);

/*
se cierra el objeto curl
*/
curl_close($handle);

/*
se crea una condicional para ver si el objeto curl se ejecuto correctamente
*/
if (!$errors) {
header('content-type: application/json');
echo "It's work!";
print_r($response);
unset($token,$handle,$file,$newData,$response,$errors,$responseJSON);

}else{
header('content-type: application/json');
echo "Not work! :(";
echo $errors;
echo $responseJSON;
unset($token,$handle,$file,$newData,$response,$errors,$responseJSON);
}

Por Jesus Solis

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Sep 2017 08:43 pm
Estas mandando id, listname y file .... que campos te dice que no esta recibiendo?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.