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

Web & réseau Delphi Discussion :

[DelPhp] Accéder à $_FILES


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Archibald29
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 113
    Par défaut [DelPhp] Accéder à $_FILES
    Bonjour à tous,

    J'utilise le modéle développé par Sub0 pour renseigner à partir de delphi une base de données mysql distante. (appel de modules php avec transmission de paramétres -champs "text"- par la méthode POST).

    Cela marche fort bien et j'aimerai maintenant pouvoir de la même façon transmettre un fichier (image en l'occurence). Mais je ne parviens pas à renseigner le tableau $_FILES par cette méthode.

    En créant une form en avec 2 champs text et un champ file le php fonctionne bien en mode manuel (par le navigateur), mais pas en mode automatique distant (avec delphi).

    Quelqu'un a t il une idée sur la façon de renseigner le champ file pour une transmission correcte ???

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Archibald29 Voir le message
    Bonjour à tous,

    J'utilise le modéle développé par Sub0 pour renseigner à partir de delphi une base de données mysql distante. (appel de modules php avec transmission de paramétres -champs "text"- par la méthode POST).

    Cela marche fort bien et j'aimerai maintenant pouvoir de la même façon transmettre un fichier (image en l'occurence). Mais je ne parviens pas à renseigner le tableau $_FILES par cette méthode.

    En créant une form en avec 2 champs text et un champ file le php fonctionne bien en mode manuel (par le navigateur), mais pas en mode automatique distant (avec delphi).

    Quelqu'un a t il une idée sur la façon de renseigner le champ file pour une transmission correcte ???
    je n'ai pas regardé comment fonctionne DELPHP mais techniquement il suffit que le POST se face avec l'encodage attendu et ça roule.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Il serait bien que tu nous montres le code que tu utilises pour faire l'appel de la page et les paramètres que tu transmets.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre éprouvé Avatar de Archibald29
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 113
    Par défaut Le code utilisé
    Bonjour,
    Merci pour vos réponses

    Le code est recopié de delphp, projet de sub0
    Il fonctionne parfaitement jusqu'au moment ou je le modifie
    pour renseigner dans une form html classique le nom du fichier
    à transmettre...(j'aimerai faire un upload automatique)

    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
     
    Procedure TfrmPost.btPostClick(Sender: TObject);
    Begin
      { Préparation de la requête http }
      HttpPost1.StringError:='';
      HttpPost1.ResetPost;
      HttpPost1.AddPost('Name', eName.Text);
      HttpPost1.AddPost('Image', eImage.Text);
      //---> c'est le paramétre ci-dessous que je voudrais renseigner
      HttpPost1.AddPost('Fichier',ExtractFilePath(Application.Exename)+'tania.jpg');
     
     
      { Post de la requête http }
      HttpPost1.StartPost;
      { Boucle d'attente de fin de réception }
      Gauge1.MaxValue := HttpPost1.MaxTimeOut;
      ... etc : code recopié de delphp
    Cette requête http émise depuis delphi appelle un module php,
    ici nommé osc_insert_manufacturers (je fais les essais de maj sur la table manufacturers de oscommerce), l'insertion fonctionne bien je souhaite maintenant charger un logo par exemple.

    ci-dessous le code php
    - l'insertion dans la base fonctionne pour les 2 paramétres Name et Image
    - l'insertion directe avec upload fonctionne également à partir IExplore
    (il faut alors désactiver la mise en REMarque du test bouton cmdupload)
    -je ne parviens pas à transmettre le parametre fichier via delphp par un addpost...

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <HTML>
      <form enctype="multipart/form-data" method="post" action="osc_insert_manufacturers.php">
        Name : <input type="text" name="Name" size="35" />
        Image : <input type="text" name="Image" size="35" />
        Fichier : <input type="file" name="Fichier" size="35" />
          <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    	<input type="submit" value="Envoyer" name="cmdupload" />
    	<input type="reset" value="Vider" />
      </form>
    </HTML>
     
    <?PHP
    include('admin/infos_de_connexion.php');
     
    function fileUpload($pstrInputName)
      {
      $blnRetour = false;
      #if ( !empty($pstrInputName) && is_uploaded_file($_FILES[$pstrInputName]['tmp_name']) )
      if ( !empty($pstrInputName) && is_uploaded_file($_FILES[$pstrInputName]['tmp_name']) )
        {
        $strRepertoire = '/catalog/images/';
        $strNom = $_FILES[$pstrInputName]['name'];
        $strNomFichier=BASE_DIR.$strRepertoire.$strNom;
        $blnRetour=move_uploaded_file($_FILES[$pstrInputName]['tmp_name'],$strNomFichier);
        }
      return $blnRetour;
      }
     
    #if ( isset($_POST['cmdupload']) && !empty($_POST['cmdupload']) )
    {
    $Name='';If(isset($_POST['Name']))$Name=$_POST['Name'];
    $Image='';If(isset($_POST['Image']))$Image=$_POST['Image'];
     
    #---> comment renseigner $_FILES ??????
    #$Fichier='';If(isset($_FILES['Fichier']))$Fichier=$_FILES['Fichier'];
     
     
    If (empty($Name)) 
      die ('Nom absent : echec insertion !!!');
    else
      {
      mysql_connect($host,$user,$pass)
       or die ("couldn't connect to server");
      mysql_select_db($base)
        or die ("Couldn't select database");
      $Name=strip_tags(trim($Name));
      $Image=strip_tags(trim($Image));
      $query = "INSERT INTO manufacturers (manufacturers_name, manufacturers_image, date_added, last_modified) VALUES ('$Name','$Image',now(), null)";
      $result = mysql_query($query)
        or die ("Couldn't execute query."); 
      $ManufacturersID = mysql_insert_id(); 
      #echo chr(149),chr(32),'Manufacturer added :  ', $Name, ' !';
    }
     
    if ( !defined('BASE_DIR') ) { define('BASE_DIR', $_SERVER['DOCUMENT_ROOT'].'/'); }
    echo '<?xml version="1.0" encoding="iso-8859-1"?>'."\n";
    $strMsg = '';
    #if ( isset($_POST['cmdupload']) && !empty($_POST['cmdupload']) )
      {
    	if ( fileUpload('Fichier') )
    		$strMsg = '<p>Transmission Ok</p>';
    	else
    		$strMsg = '<p>Echec transmission</p>';
      }
      echo chr(149),chr(32),'Manufacturer added :  ', $Name, ' ! ',$_FILES[$pstrInputName]['tmp_name'],' ',$strMsg;
      }
    ?>
    Si quelqu'un a une idée ???

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Par défaut
    j'ai le meme genre de probleme en utilisant indy au lieu de delphp

    je n'ai pas réussi a envoyer un fichier via $_FILES a un script php

    du coup j'ai fait une magouille pas terrible

    je n'utilise que des très petits fichiers txt < 50 ko j'ai passer le contenu du fichier compressé en zip et traduit en hexa en parametre de l'url

    si quelqu'un a la solution pour utiliser $_FILES cela rendrait service

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    vu que DELPHP utilise le composant THttpCli de ICS je vous conseille de chercher sur le site de François Piette la méthode à utiliser pour poster un fichier avec THttpCli

    et d'ailleurs y'a un thread qui parle de ça ici
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/06/2007, 18h14
  2. Réponses: 5
    Dernier message: 28/04/2004, 16h06
  3. Tiens, mes users ne peuvent plus accéder à la base
    Par GLDavid dans le forum Requêtes
    Réponses: 12
    Dernier message: 08/12/2003, 09h52
  4. touche pour accéder à une application : hook system?
    Par Fox_magic dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 22/01/2003, 00h02
  5. Accéder à un espace mémoire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 02/08/2002, 12h37

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