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

Langage PHP Discussion :

Récuperer les infos d'un fichier uploadé via Flash dans formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récuperer les infos d'un fichier uploadé via Flash dans formulaire
    Bonsoir à tous,

    Je suis actuellement sur la création d'un site internet communautaire.
    En faites ce qui nous intéresse ici, c'est qu'il y a une partie "échange" où les utilisateurs pourront s'échanger des fichiers musicaux en les postant.

    Je m'explique :
    Mon but étant de créer un formulaire avec les champs suivants (artiste, titre, catégorie) muni d'un fichier swf pour l'upload.


    voici la source de mon swf :
    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
    import flash.net.FileReference;
     
    var file_fr:FileReference = new FileReference();
    var list_obj:Object = new Object();
    file_fr.addListener(list_obj);
    var my_pb:mx.controls.ProgressBar;
     
    // Utilisation en mode manuel
    // pour lui dire quoi afficher
    my_pb.mode = "manual";
    // Some makup for the progress bar
    my_pb.conversion = 1024;
    my_pb.labelPlacement = "top";
    my_pb.label = "%3%% Uploadé (%1Ko/%2Ko)";
    // The progress bar will be visible when we neet it
    my_pb._visible = false;
     
     
    // type de fichiers acceptables
    // j'ai modifié la source pour accepter toutes les extensions
    // il est plus prudent de vérifier le type du fichier en php...
    browse_butn.clickHandler = function(){
    file_fr.browse([{description: "tous", extension: "*"}]);
    }
     
    // Afficher le nom du fichier
    // Appel de la page d'upload php
    list_obj.onSelect = function(){
    name_txt.text = file_fr.name;
    file_fr.upload("upload.php");
    }
     
    // Action pendant l'upload
    // Affichage de la barre de progression
    list_obj.onProgress = function (bytesTotal, bytesLoaded){
    my_pb._visible = true;
    my_pb.minimum = 0;
    my_pb.maximum = file_fr.size;
    my_pb.setProgress(bytesLoaded, my_pb.maximum);
    }
     
    // Action quand l'envoi est terminé
    list_obj.onComplete = function(){
    name_txt.text = "Votre fichier a été envoyé";
    my_pb._visible = false;
    }
     
     
    // Autres fonctions
    list_obj.onCancel = function(){
    name_txt.text = "Annulé";
    }
     
    list_obj.onIOError = function(fileRef){
    name_txt.text = "IO error with " + fileRef.name;
    }
     
    list_obj.onSecurityError = function(fileRef, error){
    name_txt.text = "Security error with " + fileRef.name + ":" + error;
    }
     
    list_obj.onHTTPError = function(fileRef:FileReference, error:Number){
    name_txt.text += "HTTP error: with " + fileRef.name + ":error #" + error;
    }


    et maintenant la source de mon fichier upload.php (requit par le fichier swf)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php if (isset($_FILES['Filedata']['name'])) {
     
       $uploadDir = "uploads/";
     
       $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);
     
       move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
     
    }  ?>




    Voilà.
    Ce que je cherche à faire c'est récupérer l'adresse de mon fichier uploadé,
    afin de l'enregistrer dans une bdd, pour pouvoir l'afficher dans un tableau type (artiste-titre-TELECHARGER)
    et évidement quand on clique sur télécharger, le fichier se télécharge =)

    J'ai déjà effectué quelques recherches sur le net, et j'ai trouver quelqu'un qui cherchait à faire la même chose, malheureusement il est rester sans réponse...

    Voici l'idée qu'il avait eu, peut être que cela pourra vous éclairez afin de mieux me répondre =)
    tonin10:
    je pense avoir trouvé une soluce pour mon probleme j'ai modifier la methode d'upload et du coup je devrais plus avoir de pb , normalement faut que je test ...

    voila ma methode

    etape 1
    création d'un ID lié au fichier qui sera uploader
    etape 2
    formulaire qui update la bdd avec l' ID et les champs du formulaire
    etape 2
    upload du fichier par contre j'ai ajouter une variable dans ma balise object de la page

    CODE
    <param name="movie" value="fileUpload.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="fileUpload.swf?id_fichier=VariableId" quality="high" bgcolor="#ffffff" width="500" height="50" name="fileUpload" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

    du coup quand mon fichier est uploader je peux updater la ligne de ma bdd ou y'a l' ID correspondant au fichier en cour

    Voilà ce à quoi il avait penser. Malheuresement je ne sais pas si ça marche et je ne sais pas le faire car je suis encore novice en programmation php...


    Si quelqu'un pouvait m'aider, je lui en serait vraiment très reconnaissant..
    En espérant être tomber sur le bon forum.. Bonne soirée à tous !

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    voilà ce que j'ai fait :

    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
     
    <?php
    if (isset($_FILES['Filedata']['name'])) {
     
       $uploadDir = "uploads/";
       $size = $_FILES['Filedata']['size'];
       $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);
       $fichier = basename($_FILES['Filedata']['name']);
       move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
    }
    $date = date("d/m/Y");
    $heure = date("H:i:s");
     
    echo "<form name=\"form1\" action=\"upload.php?action=addfile\" method=\"post\">
    <table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\">
    <tr>
    <td width=\"180\"><strong>artiste</strong></td>
    <td><input id=\"artiste\" maxLength=\"100\" size=\"45\" name=\"artiste\"></td>
    </tr>
    <td width=\"180\"><strong>titre</strong></td>
    <td><input id=\"titre\" maxLength=\"100\" size=\"45\" name=\"titre\"></td>
    </tr>
    <td><object type=\"application/x-shockwave-flash\" data=\"fileUpload.swf\"> 
    <param name=\"movie\" value=\"fileUpload.swf\" /> 
    <param name=\"wmode\" value=\"transparent\" /> 
    <p>votre naviguateur ne supporte pas cette animation flash</p> 
    </object></td>
    <tr>
    <td><B>Publier&nbsp;le:</B>&nbsp;</td>
    <td><input type=\"hidden\" id=\"date\" maxLength=\"100\" size=\"45\" name=\"date\" value=\"$date &agrave; $heure\"></td>
    <tr>
    <td valign=\"top\">&nbsp;</td>
    <td><input name=\"Submit\" type=\"submit\" value=\"Envoyer\"></td>
    <tr></table></form>";
     
     
     
     
    function addfile ()
    {
    $artiste = addslashes($_POST['artiste']);
    $titre = addslashes($_POST['titre']);
    $date = addslashes($_POST['date']);
     
    mysql_query("INSERT INTO test (id,artiste,titre,date,fichier,size) VALUES('', '$artiste', '$titre', '$date', '$fichier', '$size')");
     
    echo "<center><strong>file added.</center></strong>
    <meta http-equiv=\"refresh\" content=\"2; url=test2.php\">";
    }
     
     
     
    $action = $_GET['action'];
     
    switch ($action)
    { 
     
    case'addfile': 
    addfile ();
    break;
    }
    ?>

    Evidement tout ça ne fonctionne pas :s
    Tout est écrit dans ma tabble à part évidement $size et $fichier...

  3. #3
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    je ne connais pas flash, mais une solution, comme proposé par tonin10 est d'avoir un identifiant unique pour le formulaire html et l'envoi du fichier en flash.

    Pour générer un identifiant unique, tu peux par exemple te servir de uniqid. Il faut alors ajouter cet identifiant dans un champs caché du formulaire, et le passer en paramètre à flash pour l'intégrer dans la requête d'upload du fichier.

    Dans ta base, il faut ajouter ce champ id. Lors de la réception d'une requête d'ajout (que ce soit le fichier par flash ou les autres données par le formulaire HTML), il faut commencer par vérifier si une ligne existe dans ta table pourcet id, si oui mettre à jour l'enregistrement, si non créer un nouvel enregistrement.

    Mais ça ne serait pas plus simple de tout faire de la même façon ? (c'est à dire soit faire le formulaire complètement sous flash, soit envoyer le fichier via le formulaire HTML...)

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci de m'avoir répondu Eusebe. J'aimerais bien faire tout en flash, seulement mes connaissances en flash sont comment dire... nulles ? Je n'y connait strictement rien Pourquoi ne pas le faire en php? Pour la progress bar puisque mon formulaire sert à uploadé essentiellement des fichiers d'environ 30mo (sans progress bar c'est long, trop long pour le visiteur)

    J'ai effectivement lu le post de tonin10 , malheureusement il n'avait pas posté comment faire par la suite.

    Pour ce qui est du uniqid, je pense avoir compris comment il focntionne, mais je ne vois pas comment l'intégrer dans mon script (cf: #2). Peut être pourrais-tu m'aider à ce niveau ?

    Merci beaucoup de ta réponse!
    En espérant que ton aide une nouvelle fois...

Discussions similaires

  1. [Infos Système] Récuperer les infos système
    Par Dolphy35 dans le forum Access
    Réponses: 3
    Dernier message: 07/12/2005, 22h20
  2. Récupérer les infos d'un fichier .jpeg
    Par ArseNic dans le forum Multimédia
    Réponses: 3
    Dernier message: 05/10/2005, 16h08
  3. Problème de boutons radio pour récuperer les infos
    Par marsupilami34 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2005, 12h47
  4. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 17h37
  5. Récupérer les infos sur un fichier audio
    Par Halleck dans le forum Windows
    Réponses: 13
    Dernier message: 17/04/2004, 19h39

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