Envoi de fichier en PHP / Curl

2015juin19

Si vous avez besoin d’envoyer des fichiers à un site distant au travers de CURL, sous le même format que ce que pourrez faire un formulaire, vous pouvez utiliser la syntaxe suivante :

<?php
 $data=array(
  'nom_1'   =>  '@[CHEMIN_FICHIER];filename=[NOM_FICHIER]',
  'var_1'    =>  'contenu_variable1'
 );
 $ch=curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_exec($ch);
?>

Avec ce système, vous enverrez vos fichiers via CURL et pourrez les recevoir via les variables $_FILES.

Attention cependant, si vous souhaitez envoyer des tableaux multidimensionnels sous cette forme. En effet, cela n’est pas possible, le tableau $data ne doit contenir qu’un seul niveau, si vous voulez recevoir des tableauxmultidimensionnels, vous devez les préparer grâce à la fonction ci-dessous :

<?php
 function prepare_array($array){
  $k=isset($prefix) ? $prefix.'['.$key.']' : $key;
  if(is_array($value)){
   prepare_array($value, $new, $k);
  }
  else{
   $new[$k]=$value;
  }
 }
 prepare_array($data, $data_prepared);
?>

Commentaires