IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Envoyer un fichier avec CURL


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut Envoyer un fichier avec CURL
    Bonjour
    Je suis en PHP 7 et je veux envoyer un fichier avec CURL
    J'ai repris des exemples de la doc et ceux du web, mais je ne parviens pas à envoyer le fichier
    Cela semble pourtant simple.

    Voici ce que j'ai codé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    		$uri=$POST_ApiAdresse.'api/now/attachment/upload?table_name=sc_req_item&table_sys_id='.$Id;
     
    		$Chemin='c:/Users/ulmeen/Documents/';
     
    		$Fichier='MonFichier.xml';
     
    		$FichierSource=$Chemin.$Fichier;
     
    		$curl = curl_init($uri);
    		$headers = array(
    			'Accept:application/json',
    			'Content-Type:multipart/form-data',
    			'Authorization: Basic '. $POST_Acces
    		);
    		$cfile = curl_file_create($FichierSource,$Mime,$Fichier);
     
    		$data = array('file' => $cfile);
    		echo '<br/>datas à transférer<br/>';
    		print_r($data);
    		echo '<br/>';
     
    		curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
     
    		curl_setopt($curl, CURLOPT_POST, 1);
    		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
     
    		echo '<br/>transfert fichier ...';
     
    		$result_retour = curl_exec($curl);
     
    		if(strpos($result_retour,'failure') >0 || curl_errno($curl) >0){
    			echo '......pas de transfert';
    			echo '<br/>Erreur Curl='.curl_errno($curl);
    			echo '<br/>retour Curl:'.$result_retour;
    		}
    		else{
    			echo '......Fichier transféré';
    		}
    J'obtiens :
    datas à transférer
    Array ( [file] => CURLFile Object ( [name] => c:/Users/ulmeen/Documents/MonFichier.xml [mime] => xml [postname] => MonFichier.xml ) )

    transfert fichier .........pas de transfert
    Erreur Curl=26 ce qui correspond à "There was a problem reading a local file or an error returned by the read callback."
    Avez-vous une idée pour m'aider ?

    Cordialement

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 574
    Par défaut
    il vous manque curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); pour récupérer le résultat dans la variable.

    si vous commentez la ligne avec "CURLOPT_POSTFIELDS", est ce que la requete est bien envoyée ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut suite
    J'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    Mais cela n'a rien changé.

    Si je commente la ligne du CURLOPT_POSTFIELDS, il n'y a plus d'erreur (mais évidemment plus de tentative de transfert de fichier)

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 574
    Par défaut
    essayez en changeant les "/" par "\\" dans le chemin du fichier.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Par défaut
    j'ai réactivé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    J'ai remplacé les slashs par des anti-slashs dans le chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Chemin='c:\\Users\\ulmeen\\Documents\\';
    Ce n'est pas mieux :

    datas à transférer
    Array ( [file] => CURLFile Object ( [name] => c:\Users\ulmeen\Documents\MonFichier.xml [mime] => xml [postname] => MonFichier.xml ) )

    transfert fichier .........pas de transfert
    Erreur Curl=26
    retour Curl:

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 574
    Par défaut
    je commence à être à cours d'idées.
    essayez en mettant le fichier à uploader dans le même répertoire que le fichier php et pour le chemin mettez $Chemin = __DIR__ . DIRECTORY_SEPARATOR;.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment envoyer des fichiers avec winsock2 ?
    Par x-programer dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 08/02/2009, 08h29
  2. .NET - envoye d'images avec Curl
    Par opimon dans le forum C#
    Réponses: 2
    Dernier message: 01/02/2008, 09h16
  3. [cURL] Copie de fichier avec Curl
    Par eowene dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 17/11/2006, 15h03
  4. Envoyer un fichier avec Inet
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/09/2006, 00h15
  5. Serveur/Client UDP: comment envoyer un fichier avec mon code
    Par danje dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/12/2005, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo