Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2860 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Traiter l'upload automatiquement avec Curl

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Traiter l'upload automatiquement avec Curl

n°1373798
Paco630
Posté le 24-05-2006 à 09:58:10  profilanswer
 

Bonjour,
Je vous expose mon problème :
Je souhaite automatiser l'upload d'un document sur le poste d'un client vers mon serveur web. Je connais le chemin du fichier sur le poste du client car je l'aurais créer auparavant c'est pourquoi je ne veux pas de champ parcourir.
La seule solution que j'ai trouvé à présent est la librairie Curl.
J'aimerai savoir pour ceux qui l'ont déjà utiliser(ou si quelqu'un a une autre solution) comment réaliser ce traitement.
Je veux donc remplacer ce formulaire :

Code :
  1. <body>
  2. <form name="form" method="POST" action="page_receptrice.php" enctype="multipart/form-data">
  3.    <!-- Taille maximale en octets. Non sécurisé car facilement contournable !! -->
  4.    <input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
  5.    Veuillez s&eacute;lectionner un fichier &agrave; uploader:
  6.    <input type="file" name="aFile" value="c:/test.jpg" />
  7.    <input type="submit" name="submitFile" value="Envoyer le fichier" />
  8. </form>
  9. </body>


Voici ce que j'ai voulu réaliser avec la librairie Curl :

Code :
  1. <?php
  2. $postData = array();
  3. //simulates <input type="file" name="file_name">
  4. $postData[ 'MAX_FILE_SIZE']="500000";
  5. $postData[ 'aFile'] = "c:\test.jpg";
  6. $postData[ 'submit' ] = "SubmitFile";
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, "http://192.168.100.198/SITERCOI_WEB/FR/page_receptrice.php" );
  9. curl_setopt($ch, CURLOPT_POST, 1 );
  10. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. $postResult = curl_exec($ch);
  13. if (curl_errno($ch)) {
  14. print curl_error($ch);
  15. }
  16. curl_close($ch);
  17. print "$postResult";
  18. ?>


Et enfin voici la page qui réalise l'upload même si cette cette page n'est pas vraiment utile pour résoudre le problème(page_receptrice.php):

Code :
  1. <?php
  2.   $destination_dir = 'C:\\Mes Sites\\SiteRCOI\\SITERCOI_WEB\\upload\\';
  3.    
  4.    // taille maximale en octets du fichier à uploader  
  5.    $file_max_size = 5000000;
  6.    
  7.    // extensions de fichiers autorisées  
  8.    $authorized_extensions = array('jpg', 'gif');
  9.    
  10.    /* TRAITEMENT PRINCIPAL  
  11.     */   
  12.    
  13.    // vérifie l'existence du répertoire de destination  
  14.    if (!is_dir($destination_dir)) {
  15.      echo 'Veuillez indiquer un r&eacute;pertoire destination correct !';
  16.      die();
  17.    }
  18.    // vérifie que répertoire de destination a des droits en écriture  
  19.    if (!is_writeable($destination_dir)) {
  20.      echo 'Veuillez spécifier des droits en écriture pour le r&eacute;pertoire destination !';
  21.      die();     
  22.    }   
  23.     echo $_FILES['aFile']['tmp_name'];
  24. echo $_FILES['aFile'];
  25. echo '     ';
  26. echo $_FILES['aFile']['name'];
  27.    // réception du formulaire  
  28.    if (isSet($_POST['submitFile'])) {
  29.      // vérifie qu'un fichier a bien été soumis  
  30.      if (isSet($_FILES) && is_array($_FILES)) {
  31.    
  32.        // pas d'erreur lors de l'upload  
  33.        if ($_FILES['aFile']['error'] == UPLOAD_ERR_OK) {
  34.          
  35.          // vérifie la taille en octets  
  36.          if ($_FILES['aFile']['size'] <= $file_max_size) {
  37.            // vérifie l'extension du fichier recu  
  38.            // il est aussi possible (et sans doute mieux) de se baser sur $_FILES['aFile']['type']  
  39.            // qui retourne le type MIME correspondant (par exemple: image/pjpeg)           
  40.            $lastPos = strRChr($_FILES['aFile']['name'], "." );
  41.            if ($lastPos !== false && in_array(strToLower(subStr($lastPos, 1)), $authorized_extensions)) {
  42.    
  43.              // définit un nom de fichier destination unique à partir du nom du fichier original formaté  
  44.              $destination_file = time().formatFileName($_FILES['aFile']['name']);           
  45.              // déplace le fichier uploadé du répertoire temporaire  
  46.              // vers les répertoire/fichier destination spécifiés  
  47.              if (move_uploaded_file($_FILES['aFile']['tmp_name'],
  48.                                          $destination_dir.DIRECTORY_SEPARATOR.$destination_file)) {
  49.                echo 'Fichier valide et upload&eacute; correctement.';   
  50.              } else { // error sur move_uploaded_file  
  51.                echo 'Le fichier n\'a pas &eacute;t&eacute; upload&eacute; correctement !';
  52.              }
  53.            } else { // pas d'extension ou mauvaise extension  
  54.              echo 'Mauvaise extension !';
  55.            }     
  56.          } else { // Taille maximale dépassée  
  57.            echo 'Fichier trop volumineux !';
  58.          }
  59.        } else { // Erreur lors de l'upload  
  60.                }   
  61.      } else { // aucun fichier reçu  
  62.        echo 'Pas de fichier recu';
  63.      }
  64.    } // fin de réception de formulaire  
  65. ?>


Le résultat de mon script est une page blanche mais sans erreur php. J'imagine que la librairie Curl est bien installé mais sans certitude. J'aimerai donc avoir vos avis sur l'utlisation de Curl et de mon script qui ne semble pas compliqué. Je précise que le sript d'upload fonctionne lorsqu'il est appelé par le formulaire html. Merci d'avance,
Matt
PS : Désolé pour le post un peu long.


Message édité par Paco630 le 24-05-2006 à 10:43:21
mood
Publicité
Posté le 24-05-2006 à 09:58:10  profilanswer
 

n°1374064
the_bigboo
Posté le 24-05-2006 à 13:34:54  profilanswer
 

le phpinfo() te dira si ton extension est chargée, c'est déjà un début :)

n°1374166
Paco630
Posté le 24-05-2006 à 14:39:41  profilanswer
 

the_bigboo a écrit :

le phpinfo() te dira si ton extension est chargée, c'est déjà un début :)


J'ai bien fait un phpinfo je ne vois pas curl apparaitre dans les modules chargés. Mais ce que je ne comprends pas c'est pourquoi je n'ai pas d'erreur concernant les fonctions.
Matt

n°1374253
the_bigboo
Posté le 24-05-2006 à 15:18:57  profilanswer
 

as tu mis ton PHP.ini a E_ALL au niveau du moteur d'erreur ?

n°1374301
Paco630
Posté le 24-05-2006 à 15:39:51  profilanswer
 

the_bigboo a écrit :

as tu mis ton PHP.ini a E_ALL au niveau du moteur d'erreur ?


D'abord merci de t'interesser à mon problème et ensuite je pense que tu me parles cette ligne : error_reporting  =  E_ALL
Elle est donc positionnée à E_ALL si c'est ce dont tu me parlais.
Matt

n°1374314
the_bigboo
Posté le 24-05-2006 à 15:44:42  profilanswer
 

ok, regarde au nniveau de ton rendu HTML, histoire de voir si ca ne s'est pas brutalement coupé.
je veux dire par la un <table> ou un <div> qui se ferme pas. Ca serais peut-etre une piste

n°1374333
Paco630
Posté le 24-05-2006 à 15:56:44  profilanswer
 

Le rendu HTML ne donne rien qui laisse présager une erreur :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>
Je commence à penser que Curl n'est pas installé mais je ne vois pas trop comment l'installer. J'ai lu qu'il fallait le compiler mais je ne vois pas en quoi ceci va ajouter mon module curl à php.
Matt


Message édité par Paco630 le 24-05-2006 à 15:57:24
n°1374574
the_bigboo
Posté le 24-05-2006 à 20:40:52  profilanswer
 

un module se compile. Par exemple, PHP est installé comme module d'apache. Il s'agit de librairies qu'il faut compiler puis déclarer dans une application.
 
En l'occurence un compilation de PHP se fait avec "make" , instruction suivant généralement le script d'ajout de parametres ( ./configure )
 
Ici c'est pareil.
 
Assure toi d'avoir les librairies c++ de disponibles. Sinon make provoque des erreurs

n°1374575
Djebel1
Nul professionnel
Posté le 24-05-2006 à 20:43:25  profilanswer
 

apt-get install php5, jamais rien eu à compiler :D

Message cité 1 fois
Message édité par Djebel1 le 24-05-2006 à 20:43:44
n°1374628
the_bigboo
Posté le 24-05-2006 à 21:52:17  profilanswer
 

Djebel1 a écrit :

apt-get install php5, jamais rien eu à compiler :D


oui, si tu es sur debian, j'ai fais la meme ( :whistle: )
mais sinon en regle général on doit passer par la compîlation !

mood
Publicité
Posté le 24-05-2006 à 21:52:17  profilanswer
 

n°1374695
Paco630
Posté le 24-05-2006 à 23:27:17  profilanswer
 

the_bigboo a écrit :

oui, si tu es sur debian, j'ai fais la meme ( :whistle: )
mais sinon en regle général on doit passer par la compîlation !


En fait la librairie php_curl.dll est deja presente dans les extensions de PHP donc je n'ai peut-etre pas besoin de recompiler. Et sinon j'essaierai de faire mon serveur sur une debian.
Matt

n°1374938
the_bigboo
Posté le 25-05-2006 à 15:38:09  profilanswer
 

je n'avais pas compris que tu utilisais une plateforme win32 :p
dans ce cas c'est juste une ligne a decommenter dans ton PHP.INI :p

n°1376424
Paco630
Posté le 29-05-2006 à 08:32:36  profilanswer
 

Je crois qu'après beaucoup de tentatives et de temps perdu, je vais arrêter d'essayer d'uploader un fichier sans avoir un champ parcourir(ou en remplissant le chemin avec du javascript par exemple). Il semble impossible (enfin pour un developpeur comme moi) de passer a travers ce procédé. Merci quand même pour vos réponses en attendant que quelqu'un arrive a faire cela.
@+
Matt

n°1438319
denisvigne​s
Posté le 07-09-2006 à 14:12:16  profilanswer
 

up, ca m'interesse

n°1438337
Sh@rdar
Ex-PhPéteur
Posté le 07-09-2006 à 14:19:09  profilanswer
 

ça me semble impossible, question de sécurité (en tout cas si c'est possible c'est grave [:mlc] )


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1438345
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-09-2006 à 14:27:44  profilanswer
 

comment c'est nawak ce topic [:dawao]

n°1438703
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-09-2006 à 20:19:18  profilanswer
 

Sh@rdar a écrit :

ça me semble impossible, question de sécurité (en tout cas si c'est possible c'est grave [:mlc] )


 
Clairement oui, on pourrait faire des pages "piégées" qui iraient chercher certains fichiers contenant des licences, des mots de passes etc...
 
Étant donné que chaque appli stockes ce genre de chose dans un dossier bien spécifique.


---------------
Gamertag: CoteBlack YeLL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Traiter l'upload automatiquement avec Curl

 

Sujets relatifs
Upload ftpprobleme upload
[HTML] Lancer un téléchargement automatiquementcommande qui place automatiquement à un endroit (démarrage) un fichier
Remplir automatiquement un formulaire suivant un choix d'une liste ?Upload de lots d'images.
[VB6] Upload FTP en VB : 90 octets/seconde.........probleme d extensions sur upload de fichier
[AIDE] - Script Upload + modif nom de fichierRecharger page automatiquement après le téléchargement d'un fichier
Plus de sujets relatifs à : Traiter l'upload automatiquement avec Curl


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR