[PHP] Envoyer un fichier avec cUrl

Si vous êtes amené à envoyer un fichier via cUrl en php, voici de quoi vous mettre sur la piste !

Le fichier permettant l’envoi :

curl_postfile.php

<?php
/**
*   curl_postfile.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/10/27/php-envoyer-un-fichier-avec-curl
*
*   This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/**
 * Fonction qui envoie le fichier $My_File vers $CURL_POSTURL
 * @param $My_File Nom et chemin du fichier
 * @param $CURL_POSTURL Adresse de la page qui doit recevoir et gérer les opérations
 * @return $response Retourne les informations concernant le traitement de l'exécution
 */
function curl_upload_file($My_File, $CURL_POSTURL){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_VERBOSE, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
	curl_setopt($ch, CURLOPT_URL, $CURL_POSTURL);
	curl_setopt($ch, CURLOPT_POST, true);
	$post = array(
  	'My_File' => '@'.$My_File,
  	'Another_Field' => 'Yes!'
	);

	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	$response = curl_exec($ch);

	return $response;
}

/**
* Le fichier test.txt est un document se trouvant dans le même dossier que les fichiers .php
* L'Url est une Url locale dont le domaine est configuré sur le serveur local http://test/
*/
curl_upload_file('./test.txt','http://test/curl_postfile_receive.php');
?>

Le fichier permettant la réception
curl_postfile_receive.php

<?php
/**
*   curl_postfile_receive.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/10/27/php-envoyer-un-fichier-avec-curl
*
*   This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/*
 * Chemin où sera enregistré le fichier
 */
$FILE_FOLDER='/tmp';

/*
 * Vérification de l'existence de $_FILES qui contient les informations sur le fichier envoyé
 */
if(isset($_FILES)){
	/*
	 * Vérification que le fichier provient bien du serveur
	 */
	if(is_uploaded_file($_FILES['My_File']['tmp_name'])){
		/*
		 * Déplacement du fichier au bon endroit avec son nom d'origine
		 */
		move_uploaded_file($_FILES['My_File']['tmp_name'],$FILE_FOLDER.'/'.$_FILES['My_File']['name']);
	}
}
?>

Cela ne représente qu’une partie de la gestion de cUrl, mais une bonne base si vous avez besoin d’envoyer des fichiers de cette manière.

Le Ragot du 27/10/10

Sloup.net
27/10/10
  • L’essence revient dans 4 stations sur 5 (Bon, le seul problème c’est que beaucoup de camion apporte de l’essence, mais pas du diésel… Hors, le diésel est l’énergie la plus demandée dans le monde automobile en france… Sinon, si vous aviez du GPL, vous n’auriez pas été embêtés)
  • Une solution, la démobilisation ! (C’est la seule solution qu’ont trouvé les grévistes afin de mettre fin à leur spectacle immonde. Et oui, à se battre contre rien, il faut bien décider un jour à faire machine arrière.)
  • Des étudiants sont sortis dans les rues, peut-être un milliers à travers la france ? (Dans tous les cas, ils étaient plus là histoire de prendre l’air… Rien à dire, comme d’habitude, mais surtout, aucune revendication ! Et oui, c’est cela les manifestations de nos jours !)
  • La réforme sur les retraites est adoptée au Sénat (Et ceux ne sont pas les étudiants qui causaient devant qui auront donné à matière à réfléchir et à discuter)
  • A 20 ans, une jeune fille prend la place du chef de la police dans une des villes les plus dangereuses du Mexique ! (Cartels ou justice ? Nous verrons bien qui gagnera. D’un côté cela mettra du sang vrai dans les cher de la police mexicaine. Certainement qu’elle trouvera une solution pour faire en sorte que les trafiques se déroulent proprement et que les personnes qui ne veulent pas en entendre parler, ne soient pas gênées par le trafic)
  • Les leds sont dangereuses pour la santé (Alors, reprenons nos bonnes vielles ampoules incandescentes ! Non, mais, c’est vrai, on fait tout un plat pour que l’on consomme des ampoules basses consommations, à led… Et ensuite, on vous demande de faire attention car elles sont dangereuses pour la santé. Il semblerait que les leds les plus dangereuses se situent : dans les phares de voitures, dans les lampes des dentistes et dans les lieux publics. Et oui, vous avez bien lu, les plus à risque sont celles auxquelles vous ne pouvez pas échapper…)
  • Les médecins peuvent maintenant pratiquer de chez eux ! (Et oui, le télétravail pour le médecin est maintenant autorisé en France. Il faut dire, pour donner un arrêt de travail, il n’y a pas besoin de se déplacer… Et au moins, les faux malades n’auront plus à justifier du fait qu’ils arrivent à se rendre chez le médecin, mais qu’ils sont incapables d’envoyer un mail afin de prévenir la société qui les emplois de leur absence !)
  • Paul Le Poulpe est décédé à l’âge de 2 ans et demi (Il serait mort de cause naturel et sans souffrance. Cela me rassure, vu qu’il a déjà échappé à des attentats ! Enfin, c’est dommage qu’il ne soit plus, je me demande comment la météo fera pour nous fournir des prévisions météorologiques)
  • Un nouveau tsunami frappe en Indonésie (C’est dans la même région que s’était déroulé celui de 2004, pour le moment on recherche plus de 100 personnes pour lesquelles aucune nouvelle n’a été reçu. Espérons qu’il soit moins mortel que le précédent)
  • Les smartphones se vendent de mieux en mieux, 133% en plus ces derniers mois (C’est comme cela que l’on devient privé de toute liberté… Plus on peut faire de chose avec un téléphone, plus de temps passé relié avec la société pour laquelle on travail… Alors que faire ? Prendre le courage de se couper de la société, ou devenir esclave ?)