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