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 :

[Upload] upload fichier sur ftp free


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut [Upload] upload fichier sur ftp free
    Bonjour, je voudrai savoir quel est le meilleur moyen pour envoyer des donner sur un ftp free depuis php, certain disent que le mieux et de passé par les fonction ftp (ftp_login ect...) et d'autre disent qu'il vaut mieux passé par un protocole http, sachant que les script seront sur un ftp free. J'ai lu aussi qu'il y avait des probleme avec les ftp free pour utilisé se protocole (il faut utilisé un script avec l'extension .php3) et quel sont les limitation? pour le http elle sont fixé dans le php ini (max_file_size et pour le temps d'up maxi) et en ftp ya une limite de taille et de temps?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Salut !
    Je suis sous free aussi.
    J'utilise un http, et j'ai un problème insoluble (apparemment) :

    Lorsque j'upload un fichier lourd (autre qu'un .txt), il me met une taille de 0 et ne reconnaît pas le type (et par conséquent ne veut pas l'uploader).

    Désolé de ne pas t'appoerter de réponse, mais si quelqu'un en avait une pour nous deux !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    perso j'ai lacher ce que je voulais faire c t pour un forum mais ca interresse personne lol mais le probleme vien peut etre du fait qu'il y ai une limite de 2mo fixé dans le php.ini. si je trouve qque chose je te fais signe il me semble avoir lu des trucs la dessus.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Tiens, c'est amusant, moi aussi c'est pour un forum.
    Je connais bien cette histoire de limitation à 2Mo.
    A la limite ce ne serait pas trop grave, mais je n'arrive même pas à poster des fichiers de 2 Ko !!!!!

    Merci en tout cas de ta réponse rapide.
    Tu as trouvé quelle solution pour ton forum ?

  5. #5
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Perso, j'ai trouvé une solution, mais qui ne va pas beaucoup aux puristes...
    J'utilise un applet signé (pour l'accès au système de fichier client) qui se connecte sur le ftp free, puis à la fin du transfert se ferme et renseigne un input hidden sur le chemin du serveur où est stocké le fichier...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Dis donc, ça m'intéresserait pas mal...

    Pourrais-tu me passer ton script, par hasard ?

  7. #7
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par pepper
    Salut !
    Je suis sous free aussi.
    J'utilise un http, et j'ai un problème insoluble (apparemment) :

    Lorsque j'upload un fichier lourd (autre qu'un .txt), il me met une taille de 0 et ne reconnaît pas le type (et par conséquent ne veut pas l'uploader).

    Désolé de ne pas t'appoerter de réponse, mais si quelqu'un en avait une pour nous deux !
    Quand tu uploads un ficheir lourd c'est à dire? Quel est ton code? Le script est-il executé sur le ftp en question ou sur un ftp distant?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    ah oui aussi quand tu utilise des requete http pour up des fichier il faut les copier du rep temp au rep final il me semble.

  9. #9
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par Halukard
    ah oui aussi quand tu utilise des requete http pour up des fichier il faut les copier du rep temp au rep final il me semble.
    move_uploaded_file()
    ftp_fput()

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Justement, j'utilise move_upload_files, mais ça ne marche pas pour les fichiers supérieurs à 5 ou 6 ko !!!! (.txt, .html ça va, mais dès que je poste des .zip ou des .doc de 30 Ko, ça refuse ..... la taille est détectée à 0, le type n'est pas reconnu)

    Bon, voici mon code, ce sera plus simple que de parler dans le vide !

    Le code du formulaire tout d'abord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <FORM action="parametres.php" method="POST" ENCTYPE="multipart/form-data">
     
              <INPUT type="hidden" name="MAX_FILE_SIZE" VALUE="2000000">
              <INPUT type="file" name="Fichier">
     
    <input type="text" name="Titre" size="40" maxlength="256" value="Titre">
    <input type="text" name="Pseudo" size="10" maxlength="256" value="Pseudo">
     
    <INPUT type="submit" value="Envoi">
    Puis celui de la page parametres.php :

    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
    <?php
     
    require("./Fonctions.php");
     
    $Fiche = $_FILES['Fichier'];
    $Nom = $Fiche['name'];
    $Titre = trim($_POST['Titre']);
    $Pseudo = trim($_POST['Pseudo']);
    $Cycle = $_POST['Cycle'];
    $Discipline = trim($_POST['Discipline']);
    $Dossiers = array(); 
    $Fichiers = array(); 
    $Dir = 'Sequences/INFO';
     
    if (Verif_form($Fiche, $Titre, $Pseudo))
    {
    	$Nom_fichier = './Sequences/INFO/'.$Nom.'.txt';
    	if ($Flux = fopen($Nom_fichier,"x+"))
    	{
    		Sauve_upload($Fiche, $_POST['Cycle']);
    		Ecrit_info($Flux, $Nom, $Titre, $Pseudo, $Cycle, $Discipline);
    		fclose($Flux);
    	}
    	else
    	{
    		echo 'Le fichier '.$Nom_fichier.' existe déjà !<br />';
    	}
     
    }
    else
    {
    	echo 'Do it again !';
    }
    ?>

    Puis le fichier fonction.php qui contient la fonction move_upload_files :

    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
    68
    69
    70
    71
    72
    73
    74
    <?php
    // Fonction de vérification des infos du formulaire  
    function Verif_form($Fiche, $Titre, $Pseudo)
    {
    	$Fichier = $Fiche['name'];
    	$Size = $Fiche['size'];
    	$Tmp = $Fiche['tmp_name'];
    	$Type = $Fiche['type'];
    	$Error = $Fiche['error'];
     
    	echo 'Fichier : '.$Fichier.'<br/>';
    	echo 'Taille : '.$Size.'<br/>';
     
    	/*if ($Size)
    	{*/
    		if ($Titre & $Pseudo)
    		{
    			echo 'Titre : '.$Titre.'<br/>';
    			echo 'Auteur : '.$Pseudo.'<br/>';
    			echo 'Nom d\'origine => '.$Fichier.'<br />';
    			echo 'Taille => '.$Size.'<br />';
    			echo 'Nom sur le serveur => '.$Tmp.'<br />';
    			echo 'Type de fichier => '.$Type.'<br />';
    			echo 'Code erreur => '.$Error.'<br />';
    			return 1;
    		}
    		else
    		{
    			echo 'Vous n\'avez pas rempli tous les champs !'.'<br/>';
    			return 0;
    		}
    	/*}
    	else
    	{
    		echo 'Aucun fichier envoyé !<br />';
    		return 0;
    	}*/
    }
     
    // Fonction pour enregistrer le fichier de l'utilisateur
    function Sauve_upload($Fiche, $Cycle)
    {
     
     
     
    	if ($Fiche['error'] == UPLOAD_ERR_OK)
    	{
    		$chemin_destination = './Sequences/'.$Cycle.'/';
    		move_uploaded_file($Fiche['tmp_name'], $chemin_destination.$Fiche['name']);
    		echo 'Fichier : '.$chemin_destination.$Fiche['name'].' écrit avec succès.<br />';
    	}
    	else
    	{
    		switch ($_Fiche['name']['error'])
    			{	   case 1: // UPLOAD_ERR_INI_SIZE
                       echo "Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
                       break;
                       case 2: // UPLOAD_ERR_FORM_SIZE
                       echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
                       break;
                       case 3: // UPLOAD_ERR_PARTIAL
                       echo "L'envoi du fichier a été interrompu pendant le transfert !";
                       break;
                       case 4: // UPLOAD_ERR_NO_FILE
                       echo "Le fichier que vous avez envoyé a une taille nulle !";
                       break;
              }
    		//echo $Fiche['error'].' '.UPLOAD_ERR_OK;
     
     
    	}
    }
     
    ?>

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Ah oui, au fait, le script est sur le même FTP que l'endroit où sont uploadés les fichiers, bien sûr...

  12. #12
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    pepeer tu est interessé par ce dont je t'ai parlé ?

    C'est un formulaire avec un applet Java qui lance un petit programme de connexion au ftp et d'upload...
    Par contre, certaines fonctionnalitées ne sont pas encore développées, comme le suivi de la progression, mais ca devrait venir.

    Si tu veut je peut te donner les pistes pour le développer, et si vraiment tu galère, je pourrait te filer le code (sans mes identifiants bien sûr...)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Bien sûr que ça m'intéresse, jak0 ! (excuse-moi, je n'ai pas répondu à ton mail, dans la foulée).

    Du moment que le résultat est le même, n'importe quel code me va.
    Par contre, j'espère que ça sera pas trop dur, parce que le java ... je suis pas un pro !!
    Merci de ta proposition en tout cas.

  14. #14
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    lol, pas besoin d'être un pro. Je formule le code pour toi et je le poste ici dès que j'arrive chez moi.
    Si tu veut une piste avant, j'ai utiliser la classe FTPConnection donnée dans la FAQ Java...

    Tu as un formulaire HTML avec un petit applet (qui en fait n'en qu'un bouton) :
    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
    <html>
      <head>
        <script type="text/javascript">
          <!--
            // pour valider l'envoi du formulaire
            function checkform () {
              if (document.getElementById("id_real").value.length>0) {
                document.getElementById("submit").style.visibility = "hidden";
                return (true);
              }
              return (false);
            }
     
            // pour connaître le fichier que l'on a envoyé (si l'applet n'a pa pu le retourner en se fermant)
            function getFile() {
              if (document.getElementById('id_real').value == "") {
                file = document.getElementById('applet').getFile();
                if (file != "") {
                  document.getElementById('id_real').value = file;
                  document.getElementById('id_text').value = file;
                }
              }
            }
          //-->
        </script>
      </head>
     
    <body>
      <form action="addfile2.php" method="post" onsubmit="javascript:return(checkform());">
        Nom de Fichier : <input type="text" id="ftp_name_selecter" maxlength="50" name="ftp_fnm" /><br />
        S&eacute;lection du fichier : 
        <input type="text" id="id_text" />
        <input type="hidden" name="ftp_ful" id="id_real" /><br />
        Transf&eacute;rer le fichier : 
        <object type="application/x-java-applet" codebase="sources" width="180" height="20" id="applet">
          <param name="code" value="Uploader.class" />
          <param name="archive" value="Uploader.jar" />
        </object>
        <input id='submit' type='submit' value='OK' onclick='getFile();' />
      </form>
    </body>
    </html>
    Je sais que cela n'a pas grand intérêt tout seul, mais ca sera déjà ça de fait...

    Je te donne ce dont tu as besoin pour faire le Uploader.jar dès ce soir, a++

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Super ! J'attends la suite ....
    Par contre, est-ce que le login et le MDP seront visibles dans la source du code ?

  16. #16
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    lol, je vais bien entendu les enlever...
    Du coup, tu veut carrément la source ?

  17. #17
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    En premier lieu, il faut que tu fasse une petite modification : Dans la balise Object du fichier HTML, tu doit ajouter la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param name="MAYSCRIPT" value="true" />
    Je met les classes Java ci-après, par contre tu devrais avoir quelques petites difficultés pour compiler : il faut utiliser le plugin.jar qui est fournit dans la JRE mais qui ne se trouve pas dans le répertoire lib/ext mais /lib, donc faut modifier le classpath...

    Ensuite, il faut que tu utilise la classe FTPConnection donné dans la FAQ Java.

    Enfin, je te conseil de faire un .jar ...

  18. #18
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Fichier Uploader.java

    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
    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
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.io.File;
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import netscape.javascript.JSException;
    import netscape.javascript.JSObject;
    public class Uploader extends JApplet {
     
        private JButton uploadLauncher;
        private Transfert dialog;
        private File file;
        private String id;
     
        public Uploader() {
            super();
        }
        public String getElementById(String id) {
            try {
                JSObject wina;
     
                /**///////////////////////////////////////////////////////////////////////////**/
                /*//     ATTENTION : Ici, une erreur est lancé a la premiere création du     //*/
                /*/   JSObject. Une solution temporaire a été apporté, toutefois, il serait   /*/
                /*//                      plus prudent de le revoir...                       //*/
                /**///////////////////////////////////////////////////////////////////////////**/
                /**/try {                                                                    /**/
                /**/    wina = JSObject.getWindow(this);                                     /**/
                /**/} catch (JSException jse) {                                              /**/
                /**/    System.out.println(this.getName()+"ici, bug a revoir, solution temporaire apporté");/**/
                /**/    wina = JSObject.getWindow(this);                                     /**/
                /**/}                                                                        /**/
                /**///////////////////////////////////////////////////////////////////////////**/
                /**///////////////////////////////////////////////////////////////////////////**/
     
                return (String)wina.eval("javascript:document.getElementById('"+this.getName()+"').value;");
            } catch (JSException e) { e.printStackTrace(); return ""; }
        }
        public void setElementById(String id,String value) {
            try {
                JSObject wina;
     
                /**///////////////////////////////////////////////////////////////////////////**/
                /*//     ATTENTION : Ici, une erreur est lancé a la premiere création du     //*/
                /*/   JSObject. Une solution temporaire a été apporté, toutefois, il serait   /*/
                /*//                      plus prudent de le revoir...                       //*/
                /**///////////////////////////////////////////////////////////////////////////**/
                /**/try {                                                                    /**/
                /**/    wina = JSObject.getWindow(this);                                     /**/
                /**/} catch (JSException jse) {                                              /**/
                /**/    System.out.println(this.getName()+"ici, bug a revoir, solution temporaire apporté");/**/
                /**/    wina = JSObject.getWindow(this);                                     /**/
                /**/}                                                                        /**/
                /**///////////////////////////////////////////////////////////////////////////**/
                /**///////////////////////////////////////////////////////////////////////////**/
     
                wina.eval("javascript:document.getElementById('"+this.getName()+"').value = '"+value+"';");
            } catch (JSException e) { e.printStackTrace(); }
        }
     
        public static boolean parseJSToBoolean(String js) {
            return (js.equals("1") || "true".equals(js.toLowerCase()));
        }
     
        public static String parseBooleanToJS(boolean bool) {
            if (bool) {
                return "1";
            } else {
                return "0";
            }
        }
     
        public void init() {
            this.id = "id";
            this.uploadLauncher = new JButton("Transférer avec Java");
            this.getContentPane().setLayout(new BorderLayout());
            this.getContentPane().add(this.uploadLauncher);
            this.add(this.uploadLauncher);
            this.uploadLauncher.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    launchUpload(evt);
                }
            });
            if (this.id == null) {
                this.uploadLauncher.setEnabled(false);
            }
            setElementById("id-text", "en cours...");
            setElementById("id-real", "");
        }
     
        public String getFile() {
            return this.file.getName();
        }
        public void setFile(File file) {
            this.file = file;
        }
     
        public void launchUpload(ActionEvent e) {
            this.dialog = new Transfert(this, true);
            if (this.dialog.showDialog()) {
                this.uploadLauncher.setEnabled(false);
                this.file = this.dialog.getFile();
                System.out.println("Fin d'utilisation, récupération du fichier");
     
                try {
                    JSObject win = JSObject.getWindow(this);
                    System.out.println("pret a executer niveau 1");
                    win.eval("document.getElementById('"+this.id+"-text').value = '"+this.file.getName()+"';");
                    win.eval("document.getElementById('"+this.id+"-real').value = '"+this.file.getName()+"';");
                } catch (JSException ex) {
                    System.out.println("JSException niveau 1 : "+ex);
                    try {
                      JSObject wina = JSObject.getWindow(this);
                      System.out.println("pret a executer niveau 2");
                      wina.eval("document.getElementById('"+this.id+"-text').value = '"+this.file.getName()+"';");
                      wina.eval("document.getElementById('"+this.id+"-real').value = '"+this.file.getName()+"';");
                    } catch (JSException ex2) {
                      System.out.println("JSException niveau 2 : "+ex2);
                    }
                }
     
            } this.dialog.dispose();
        }
    }

  19. #19
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Fichier Transfert.java

    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
    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
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    import java.io.File;
    import java.io.IOException;
    import java.net.UnknownHostException;
    import java.security.AccessControlException;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JProgressBar;
     
    public class Transfert extends javax.swing.JDialog {
     
        private Uploader parent;
        private ThreadUpload thread;
        private boolean isok = false;
        private File file;
        private boolean finish = true;
     
        public Transfert(Uploader parent, boolean modal) {
            super(new JFrame(), modal);
            this.setTitle("Transfert du fichier");
            this.parent = parent;
            initComponents();
            this.btnOk.setEnabled(false);
        }
     
        private void initComponents() {
            btnOpen = new javax.swing.JButton();
            btnOk = new javax.swing.JButton();
            label = new javax.swing.JLabel();
            pnlTransfert = new javax.swing.JPanel();
            progress = new javax.swing.JProgressBar();
            pnlCompteurs = new javax.swing.JPanel();
            lblTime = new javax.swing.JLabel();
            lblPercent = new javax.swing.JLabel();
            lblSize = new javax.swing.JLabel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    exit(evt);
                }
            });
     
            btnOpen.setText("Parcourir");
            btnOpen.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    openFile(evt);
                }
            });
     
            getContentPane().add(btnOpen, java.awt.BorderLayout.WEST);
     
            btnOk.setText("Lancer");
            btnOk.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    launchTransfert(evt);
                }
            });
     
            getContentPane().add(btnOk, java.awt.BorderLayout.EAST);
     
            label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            label.setText("Veuillez s\u00e9lectionner votre fichier.");
            label.setPreferredSize(new java.awt.Dimension(50, 35));
            getContentPane().add(label, java.awt.BorderLayout.NORTH);
     
            pnlTransfert.setLayout(new java.awt.GridLayout(2, 0));
     
            pnlTransfert.add(progress);
     
            pnlCompteurs.setLayout(new java.awt.GridLayout());
     
            lblTime.setText("Dur\u00e9e : ");
            pnlCompteurs.add(lblTime);
     
            lblPercent.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            lblPercent.setText("00 %");
            pnlCompteurs.add(lblPercent);
     
            lblSize.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
            lblSize.setText("Taille : ");
            pnlCompteurs.add(lblSize);
     
            pnlTransfert.add(pnlCompteurs);
     
            getContentPane().add(pnlTransfert, java.awt.BorderLayout.CENTER);
     
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-400)/2, (screenSize.height-100)/2, 400, 100);
        }
     
        private void exit(java.awt.event.WindowEvent evt) {
            exit();
        }
     
        private void launchTransfert(java.awt.event.ActionEvent evt) {
            this.btnOpen.setEnabled(false);
            this.finish = false;
            if (this.file != null) {
                this.label.setText("Transfert du fichier : "+this.file.getName()+" en cours...");
                this.thread = new ThreadUpload("upload", this);
                this.thread.start();
                this.btnOk.setEnabled(false);
            }
        }
     
        private void openFile(java.awt.event.ActionEvent evt) {
            try {
                JFileChooser tmp = new JFileChooser();
                int i = tmp.showOpenDialog(this);
                if (i != tmp.CANCEL_OPTION) {
                    this.file = tmp.getSelectedFile();
                    this.label.setText("Fichier : "+this.file.getName()+" sélectionné.");
                    this.btnOk.setEnabled(true);
                } else {
                    this.file = null;
                    this.btnOk.setEnabled(false);
                    this.label.setText("Veuillez sélectionner votre fichier.");
                }
            } catch (AccessControlException e) {
                this.label.setText("Vous devez accepter le certificat.");
                this.btnOk.setEnabled(false);
                this.btnOpen.setEnabled(false);
            }
        }
     
        public boolean showDialog() {
            show();
            return this.isok;
        }
     
        public void exit() {
            if (this.finish) {
                setVisible(false);
            }
        }
     
        public JProgressBar getProgressBar() {
            return this.progress;
        }
     
        public JLabel getLabel() {
            return this.label;
        }
     
        public File getFile() {
            return this.file;
        }
     
        public void finalizeUpload(boolean isok) {
            this.label.setText("Fichier : "+this.file.getName()+" transféré.");
            this.lblPercent.setText("100%");
            this.lblSize.setText(this.file.length()+"/"+this.file.length());
            this.isok = isok;
            this.finish = true;
            this.parent.setFile(this.file);
        }
     
        private javax.swing.JButton btnOk;
        private javax.swing.JButton btnOpen;
        private javax.swing.JLabel label;
        private javax.swing.JLabel lblPercent;
        private javax.swing.JLabel lblSize;
        private javax.swing.JLabel lblTime;
        private javax.swing.JPanel pnlCompteurs;
        private javax.swing.JPanel pnlTransfert;
        private javax.swing.JProgressBar progress;
     
    }

  20. #20
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Fichier ThreadUpload.java

    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
    import java.io.File;
    import java.io.IOException;
    import java.net.UnknownHostException;
     
    public class ThreadUpload extends Thread {
     
        private Transfert parent = null;
     
        public ThreadUpload(String name, Transfert parent) {
            super(name);
            this.parent = parent;
        }
     
        public void run() {
     
            FTPConnection connection = new FTPConnection();
            try {
                if (connection.connect("mon_ftp")) {
                    if (connection.login("mon_login", "mon_password")) {
                        connection.executeCommand("CWD /temporary_files/");
                        connection.uploadFile(this.parent.getFile().getPath());
                        System.out.println("Transfert terminé.");
                        connection.executeCommand("RNFR /temporary_files/"+this.parent.getFile().getPath());
                        connection.executeCommand("RNTO /temporary_files/"+this.parent.getFile().getName());
                        System.out.println("Transfert finalisé.");
                        this.parent.finalizeUpload(true);
                    }
                    connection.disconnect();
                }
            } catch (UnknownHostException e) {
                System.out.println("Erreur : "+e);
                this.parent.finalizeUpload(false);
                this.parent.getLabel().setText("Erreur de connexion rencontré, fichier non transféré.");
            } catch (IOException e) {
                System.out.println("Erreur : "+e);
                this.parent.finalizeUpload(false);
                this.parent.getLabel().setText("Erreur de transfert rencontré, fichier non transféré.");
            }
            System.out.println("Transfert procédure terminé.");
        }
     
    }

Discussions similaires

  1. Upload de fichiers sur FTP
    Par Copernic09 dans le forum VBA Access
    Réponses: 14
    Dernier message: 26/08/2009, 22h15
  2. uploader un fichier sur ftp
    Par kohsaka dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/02/2008, 16h05
  3. [Upload] Upload de fichier sur intranet
    Par xaaros dans le forum Langage
    Réponses: 2
    Dernier message: 15/12/2006, 09h53
  4. Réponses: 3
    Dernier message: 21/04/2006, 00h21
  5. [Upload] upload de fichier par ftp
    Par sami_c dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2006, 12h18

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