ajouter photo API, erreur 406

Par Romane Pm, il y a 6 ans


Bonjour à tous,

Je suis sur une projet où je dois coder une site internet en php. Ce site est "lié" à une API.

Le but du site est de créer des fiches de non conformité pour ensuite y avoir accès. Mon problème est lors de l'ajout de photos à une fiche.

Voici mon code:

//récupération du token pour avoir accès à la fonction de l'API $token_file=fopen("headers.txt","r"); $i=0; while($i<2) { $token=fgets($token_file); $i++; } fclose($token_file); //récupération du chemin de la photo (c'est le bon chemin qui récupère la photo j'ai testé $pathCurrrent=getcwd (); $path= str_replace("public", "src/Controller", $pathCurrrent); $dir = "$path/uploads"; $allFiles = scandir($dir); $files=array_diff($allFiles, array('.','..')); print_r($files); $photo=$dir.'/'.$files[2]; echo $photo; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://monURl/uploadFile?flashAttributes=%7B%7D&fnc_id=7&type=true", CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => array('file'=> new CURLFILE($photo)), CURLOPT_HTTPHEADER => array( rtrim($token, "\r\n"), 'Accept: /', "Content-Type: multipart/form-data" ), )); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); $result = curl_exec($curl); var_dump($result); $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); var_dump($http_code); curl_close($curl);

Cependant cela me renvoie une erreur 406 je ne comprends pas pourquoi. Pourriez-vous m'aider ? Un grand merci !

1 réponse

Romane Pm, il y a 6 ans

finalement j'ai fais ça

$token_file=fopen("headers.txt","r"); $i=0; while($i<2) { $token=fgets($token_file); $i++; } fclose($token_file); $pathCurrrent=getcwd (); $path= str_replace("public", "src/Controller", $pathCurrrent); // echo $path; $dir = "$path/uploads"; $allFiles = scandir($dir); $files=array_diff($allFiles, array('.','..')); print_r($files); $photo=$dir.'/'.$files[2]; // print_r($files[2]); echo $photo; $boundary = uniqid(); echo $boundary; $delimiter = '-------------' . $boundary; /* if (function_exists('curl_file_create')) { // php 5.5+ $cFile = curl_file_create($photo); } else { // $cFile = '@' . realpath($photo); } $post = array('extra_info' => '123456','file'=> $cFile);*/ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://varlot.epfprojets-sceaux.com:8080/uploadFile?flashAttributes=%7B%7D&fnc_id=7&type=true", CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => array('file'=> @$photo), CURLOPT_HTTPHEADER => array( rtrim($token, "\r\n"), // 'Accept: /', "Content-Type: multipart/form-data; boundary=" . $delimiter, ), )); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); // curl_setopt($curl, CURLOPT_POSTFIELDS, $post); //$postfiles=array('file'=> new CURLFILE($photo)); // print_r($postfiles); $result = curl_exec($curl); var_dump($result); $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); var_dump($http_code); curl_close($curl)

Et j'ai l'erreur 400 Required request part 'file' is not present. Mais je ne comprends pas car il y le champs 'file'. j'ai essayé de la faire en mettant new CURLFILE aussi mais j'ai eu la même erreur...