Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/05/2008, 08h32   #1
Membre à l'essai
 
Inscription : mars 2003
Messages : 175
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 175
Points : 20
Points : 20
Envoyer un message via MSN à carter15_2001
Par défaut Bouton Parcourir Flex

Bonjour,

Je souhaiterais réaliser un bouton parcourir pour une application qui doit aller chercher un fichier mais je ne sais pas comment le faire. Il me semble qu'en Flex, ce n'est pas possible... Auriez vous une idée la dessus?

Par avance merci de votre aide
carter15_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 09h49   #2
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
utilise les fileReference et la fonction browse sa permet de faire exactement ce que tu veux
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 10h01   #3
Membre à l'essai
 
Inscription : mars 2003
Messages : 175
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 175
Points : 20
Points : 20
Envoyer un message via MSN à carter15_2001
Merci Greatalain, je vais voir ça de suite...
carter15_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 20h17   #4
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Salut!

J'ai ceci si ça peut t'intérresser...
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2008, 16h48   #5
Membre à l'essai
 
Inscription : mars 2003
Messages : 175
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 175
Points : 20
Points : 20
Envoyer un message via MSN à carter15_2001
Merci Sub.

Bon je reviens parce que je n'arrive toujours pas faire ce que je veux...
Je vais expliquer plus en détails...
J'ai une application Flex qui doit juste récupéré le chemin du fichier. Et donc en passant par le FileReference je n'arrive pas a récupérer le chemin du fichier...

carter15_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2008, 18h00   #6
Rédactrice/Modératrice
 
Ellène
Inscription : mai 2006
Messages : 898
Détails du profil
Informations personnelles :
Nom : Ellène
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 898
Points : 1 592
Points : 1 592
Salut,

J'ai eu le même soucis. En fait il n'est pas possible de récupérer le chemin d'un fichier sur un poste client car il s'execute dans un contexte sécurisé (sandbox) afin que ton application ne puisse pas modifier le poste de l'utilisateur.

Bon courage

++
__________________
Nous mettons en place une FAQ Flex, vous pouvez contribuer ici ! Aidez nous !

JDuchess France le groupe féminin Java en France : Rejoignez nous !
JDuchess France blogue !
ellene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2008, 00h27   #7
Membre à l'essai
 
Inscription : mars 2003
Messages : 175
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 175
Points : 20
Points : 20
Envoyer un message via MSN à carter15_2001
Donc tu es en train de me dire que je n'ai aucun moyen de le faire...
Et si je le download dans un buffer? ou dans un fichier temp, c'est possible?
Il y a pas d'alternative?
carter15_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2008, 09h27   #8
Rédactrice/Modératrice
 
Ellène
Inscription : mai 2006
Messages : 898
Détails du profil
Informations personnelles :
Nom : Ellène
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 898
Points : 1 592
Points : 1 592
Alors en fait il y a possibilité d'uploader ce fichier via le protocole HTTP sur le serveur (voici la doc) mais dans ce cas c'est le flux de données que tu vas récupérer et pas le chemin. Tu pourras ensuite copier ce flux côté serveur dans un répertoire que tu auras défini. J'espère avoir été claire dis le moi sinon.
__________________
Nous mettons en place une FAQ Flex, vous pouvez contribuer ici ! Aidez nous !

JDuchess France le groupe féminin Java en France : Rejoignez nous !
JDuchess France blogue !
ellene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2008, 10h01   #9
Membre à l'essai
 
Inscription : mars 2003
Messages : 175
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 175
Points : 20
Points : 20
Envoyer un message via MSN à carter15_2001
J'avoue que j'ai pas forcément tout compris mais je vais essayé de faire l'effort de comprendre tout seul pour ne pas te dérangé plus, puisque tu m'aide déjà beaucoup.
Ce matin j'ai pensé a quelques chose. Si je récupère le file.name puis que je place toujours mon fichier dans le même répertoire. Il me sera alors possible de le traiter puisque je connaitrais le chemin, me trompe je?
carter15_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2008, 11h59   #10
Rédactrice/Modératrice
 
Ellène
Inscription : mai 2006
Messages : 898
Détails du profil
Informations personnelles :
Nom : Ellène
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 898
Points : 1 592
Points : 1 592
Oui tu peux faire ça si tous tes fichiers sont toujours aux mêmes endroits.
Citation:
J'avoue que j'ai pas forcément tout compris mais je vais essayé de faire l'effort de comprendre tout seul pour ne pas te dérangé plus, puisque tu m'aide déjà beaucoup.
Non tu ne me déranges pas, y'a vraiment aucun soucis.

++
__________________
Nous mettons en place une FAQ Flex, vous pouvez contribuer ici ! Aidez nous !

JDuchess France le groupe féminin Java en France : Rejoignez nous !
JDuchess France blogue !
ellene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 23h47   #11
Membre régulier
 
Inscription : octobre 2007
Messages : 251
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2007
Messages : 251
Points : 87
Points : 87
Un peu de code ?

Code :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.FileReference;
    import flash.net.FileReferenceList;
 
    public class FileReferenceListExample extends Sprite {
        public static var LIST_COMPLETE:String = "listComplete";
        public function FileReferenceListExample() {
            initiateFileUpload();
        }
 
        private function initiateFileUpload():void {
            var fileRef:CustomFileReferenceList = new CustomFileReferenceList();
            fileRef.addEventListener(FileReferenceListExample.LIST_COMPLETE, listCompleteHandler);
            fileRef.browse(fileRef.getTypes());
        }
 
        private function listCompleteHandler(event:Event):void {
            trace("listCompleteHandler");
        }
    }
}
 
import flash.events.*;
import flash.net.FileReference;
import flash.net.FileReferenceList;
import flash.net.FileFilter;
import flash.net.URLRequest;
 
class CustomFileReferenceList extends FileReferenceList {
    private var uploadURL:URLRequest;
    private var pendingFiles:Array;
 
    public function CustomFileReferenceList() {
        uploadURL = new URLRequest();
        uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm";
        initializeListListeners();
    }
 
    private function initializeListListeners():void {
        addEventListener(Event.SELECT, selectHandler);
        addEventListener(Event.CANCEL, cancelHandler);
    }
 
    public function getTypes():Array {
        var allTypes:Array = new Array();
        allTypes.push(getImageTypeFilter());
        allTypes.push(getTextTypeFilter());
        return allTypes;
    }
 
    private function getImageTypeFilter():FileFilter {
        return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
    }
 
    private function getTextTypeFilter():FileFilter {
        return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
    }
 
    private function doOnComplete():void {
        var event:Event = new Event(FileReferenceListExample.LIST_COMPLETE);
        dispatchEvent(event);
    }
 
    private function addPendingFile(file:FileReference):void {
        trace("addPendingFile: name=" + file.name);
        pendingFiles.push(file);
        file.addEventListener(Event.OPEN, openHandler);
        file.addEventListener(Event.COMPLETE, completeHandler);
        file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        file.upload(uploadURL);
    }
 
    private function removePendingFile(file:FileReference):void {
        for (var i:uint; i < pendingFiles.length; i++) {
            if (pendingFiles[i].name == file.name) {
                pendingFiles.splice(i, 1);
                if (pendingFiles.length == 0) {
                    doOnComplete();
                }
                return;
            }
        }
    }
 
    private function selectHandler(event:Event):void {
        trace("selectHandler: " + fileList.length + " files");
        pendingFiles = new Array();
        var file:FileReference;
        for (var i:uint = 0; i < fileList.length; i++) {
            file = FileReference(fileList[i]);
            addPendingFile(file);
        }
    }
 
    private function cancelHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("cancelHandler: name=" + file.name);
    }
 
    private function openHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("openHandler: name=" + file.name);
    }
 
    private function progressHandler(event:ProgressEvent):void {
        var file:FileReference = FileReference(event.target);
        trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
    }
 
    private function completeHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("completeHandler: name=" + file.name);
        removePendingFile(file);
    }
 
    private function httpErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("httpErrorHandler: name=" + file.name);
    }
 
    private function ioErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("ioErrorHandler: name=" + file.name);
    }
 
    private function securityErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        trace("securityErrorHandler: name=" + file.name + " event=" + event.toString());
    }
}
Code :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.example.programmingas3.fileio {
    import flash.events.*;
    import flash.net.FileReference;
    import flash.net.URLRequest;
 
    import fl.controls.Button;
    import fl.controls.ProgressBar;
 
    public class FileUpload {
        // Hard-code the URL of the remote upload script.
        // private const UPLOAD_URL:String = "http://www.yourdomain.com/upload_script.cfm";
		private const UPLOAD_URL:String = "http://localhost";
        private var fr:FileReference;
        // Define reference to the upload ProgressBar component.
        private var pb:ProgressBar;
        // Define reference to the "Cancel" button which will immediately stop the upload in progress.
        private var btn:Button;
 
        public function FileUpload() {
        }
 
		/**
         * Set references to the components, and add listeners for the SELECT,
         * OPEN, PROGRESS, and COMPLETE events.
         */
        public function init(pb:ProgressBar, btn:Button):void {
            // Set up the references to the progress bar and cancel button, which are passed from the calling script.
            this.pb = pb;
            this.btn = btn;
 
            fr = new FileReference();
            fr.addEventListener(Event.SELECT, selectHandler);
            fr.addEventListener(Event.OPEN, openHandler);
            fr.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            fr.addEventListener(Event.COMPLETE, completeHandler);
        }
 
        /**
         * Immediately cancel the upload in progress and disable the cancel button.
         */
        public function cancelUpload(e:MouseEvent):void {
            fr.cancel();
//            pb.label = "UPLOAD CANCELLED";
            btn.enabled = false;
        }
 
        /**
         * Launch the browse dialog box which allows the user to select a file to upload to the server.
         */
        public function startUpload(e:MouseEvent):void {
            fr.browse();
        }
 
        /**
         * Begin uploading the file specified in the UPLOAD_URL constant.
         */
        private function selectHandler(event:Event):void {
            var request:URLRequest = new URLRequest();
            request.url = UPLOAD_URL;
            fr.upload(request);
        }
 
        /**
         * When the OPEN event has dispatched, change the progress bar's label 
         * and enable the "Cancel" button, which allows the user to abort the 
         * upload operation.
         */
        private function openHandler(event:Event):void {
//            pb.label = "UPLOADING";
            btn.enabled = true;
        }
 
        /**
         * While the file is uploading, update the progress bar's status and label.
         */
        private function progressHandler(event:ProgressEvent):void {
//            pb.label = "UPLOADING %3%%";
            pb.setProgress(event.bytesLoaded, event.bytesTotal);
        }
 
        /**
         * Once the upload has completed, change the progress bar's label and 
         * disable the "Cancel" button since the upload is already completed.
         */
        private function completeHandler(event:Event):void {
//            pb.label = "UPLOADING COMPLETE";
            pb.setProgress(0, 100);
            btn.enabled = false;
        }
    }
}
Je bosse dessus ce week-end aussi
popovitch130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2009, 17h00   #12
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 3
Points : 3
Bonjour,

J'aurais voulu savoir si après de longue recherche, quelqu'un avait trouvé une réponse à cette problématique.

Serait-il possible également d'avoir un exemple.

Merci D'avance,

Griff....
grifffarid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2009, 17h29   #13
Membre régulier
 
Inscription : octobre 2007
Messages : 251
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2007
Messages : 251
Points : 87
Points : 87
Tout est dans le code, ca fonctionne parfaitement sous Flex, il suffit d'utiliser la Classe FileReference pour uploader ou FileReferenceList si tu veux uploader plusieurs fichiers à la fois http://livedocs.adobe.com/flash/9.0_...riptLangRefV3/ Quand tu instancie la classe FileReference (lors d'un clic sur un bouton par exemple), une popup s'ouvre pour spécifier le fichier à envoyer sur le serveur. C'est pas très compliqué t'inquiète tout est sur la doc en français. Bon courage
popovitch130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2009, 17h37   #14
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 3
Points : 3
Ma problématique concerne la récupération du chemin de fichier à uploader.

Je ne vois pas où cela se trouve?

Merci d'avance.
grifffarid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2009, 17h59   #15
Membre régulier
 
Inscription : octobre 2007
Messages : 251
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2007
Messages : 251
Points : 87
Points : 87
Code :
$file_temp = $_FILES['file']['tmp_name']; // le fichier tmp que tu récupère
sorry, pas défaut c'est file le nom de l'"input"
popovitch130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2009, 18h08   #16
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 3
Points : 3
en fait j'ai oublié de préciser une chose...

Je n'utilise pas de serveur WEB pas de PHP.

C'est une application locale que je dois produire mais je ne peux pas utiliser AIR car je dois rester en SWF.

Le but de mon application est donc de proposer à l'utilisateur de choisir un fichier et ensuite d'afficher le chemin de ce fichier dans mon Flex.

J'ai absolument besoin du nom du chemin de mon fichier, mon projet en dépend... Je n'ai pas valider ça en début du projet et je risque de me faire shooter si ce n'est pas le cas...

Merci d'avance pour votre aide.
grifffarid est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h13.


 
 
 
 
Partenaires

Hébergement Web