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

Entrée/Sortie Java Discussion :

uploader un fichier sur un serveur via httpclient


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut uploader un fichier sur un serveur via httpclient
    Bonjour à tous je souhaite depuis peu uploader un fichier sur mon serveur via le protocole http. En effet je développe une application desktop qui doit envoyer et recevoir des fichiers sur un serveur distant, jusqu'ici la réception se passe bien mais l'envoi ne marche toujours pas. Voilà le code que j'ai trouvé dans mes recherches:
    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
     
    package Admin;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.methods.HttpRequestBase;
    import org.apache.http.entity.mime.MultipartEntity;
    import org.apache.http.entity.mime.content.FileBody;
    import org.apache.http.entity.mime.content.StringBody;
    import org.apache.http.impl.client.DefaultHttpClient;
     
     
     
    @SuppressWarnings("deprecation")
    public class SampleFileUpload {
     
        /**
         * A generic method to execute any type of Http Request and constructs a response object
         * @param requestBase the request that needs to be exeuted
         * @return server response as <code>String</code>
         */
        private static String executeRequest(HttpRequestBase requestBase){
            String responseString = "" ;
     
            InputStream responseStream = null ;
            HttpClient client = new DefaultHttpClient () ;
            try{
                HttpResponse response = client.execute(requestBase) ;
                if (response != null){
                    HttpEntity responseEntity = response.getEntity() ;
     
                    if (responseEntity != null){
                        responseStream = responseEntity.getContent() ;
                        if (responseStream != null){
                            BufferedReader br = new BufferedReader (new InputStreamReader (responseStream)) ;
                            String responseLine = br.readLine() ;
                            String tempResponseString = "" ;
                            while (responseLine != null){
                                tempResponseString = tempResponseString + responseLine + System.getProperty("line.separator") ;
                                responseLine = br.readLine() ;
                            }
                            br.close() ;
                            if (tempResponseString.length() > 0){
                                responseString = tempResponseString ;
                            }
                        }
                    }
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if (responseStream != null){
                    try {
                        responseStream.close() ;
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            client.getConnectionManager().shutdown() ;
     
            return responseString ;
        }
     
        /**
         * Method that builds the multi-part form data request
         * @param urlString the urlString to which the file needs to be uploaded
         * @param file the actual file instance that needs to be uploaded
         * @param fileName name of the file, just to show how to add the usual form parameters
         * @param fileDescription some description for the file, just to show how to add the usual form parameters
         * @return server response as <code>String</code>
         */
        public String executeMultiPartRequest(String urlString, File file, String fileName, String fileDescription) {
     
            HttpPost postRequest = new HttpPost (urlString) ;
            try{
     
                MultipartEntity multiPartEntity = new MultipartEntity () ;
     
                //The usual form parameters can be added this way
                multiPartEntity.addPart("fileDescription", new StringBody(fileDescription != null ? fileDescription : "")) ;
                multiPartEntity.addPart("fileName", new StringBody(fileName != null ? fileName : file.getName())) ;
     
                /*Need to construct a FileBody with the file that needs to be attached and specify the mime type of the file. Add the fileBody to the request as an another part.
                This part will be considered as file part and the rest of them as usual form-data parts*/
                FileBody fileBody = new FileBody(file, "application/octect-stream") ;
                multiPartEntity.addPart("attachment", fileBody) ;
     
                postRequest.setEntity(multiPartEntity) ;
            }catch (UnsupportedEncodingException ex){
                ex.printStackTrace() ;
            }
     
            return executeRequest (postRequest) ;
        }
     
        public static void main(String args[]){
            SampleFileUpload fileUpload = new SampleFileUpload () ;
            File file = new File ("D:\\ages\\logo_ages.jpg") ;
     
            String response = fileUpload.executeMultiPartRequest("http://127.0.0.1/images/logo_ages.jpg", file, file.getName(), "File Upload test Hydrangeas.jpg description") ;
            System.out.println("Response : "+response);
     
        }  
     
    }
    Lorsque j’exécute voilà ce qui se passe:
    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
     
    log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.BasicClientConnectionManager).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    Response : <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
    <title>Object not found!</title>
    <link rev="made" href="mailto:postmaster@localhost" />
    <style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
        body { color: #000000; background-color: #FFFFFF; }
        a:link { color: #0000CC; }
        p, address {margin-left: 3em;}
        span {font-size: smaller;}
    /*]]>*/--></style>
    </head>
     
    <body>
    <h1>Object not found!</h1>
    <p>
     
     
        The requested URL was not found on this server.
     
     
     
        If you entered the URL manually please check your
        spelling and try again.
     
     
     
    </p>
    <p>
    If you think this is a server error, please contact
    the <a href="mailto:postmaster@localhost">webmaster</a>.
     
    </p>
     
    <h2>Error 404</h2>
    <address>
      <a href="/">127.0.0.1</a><br />
      <span>Apache/2.4.12 (Win32) OpenSSL/1.0.1m PHP/5.6.11</span>
    </address>
    </body>
    </html>

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileUpload.executeMultiPartRequest("http://127.0.0.1/images/logo_ages.jpg",
    L'url du service qui traite l'upload n'est certainement pas l'url d'une servlet par exemple si ton appli est en Java, d'une page php si ton application web est en php...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un serveur web ne fournit pas de manière directe d'uploader un fichier dessus. La manière typique d'ajouter un fichier, c'est que le propriétaire du site utilise FTP pour mettre le fichier sur le serveur, à un endroit où le site web le prendra en compte.

    Mais il n'est pas possible pour n'importe qui, sans accès particulier, d'envoyer des fichiers sur un site qui n'est pas le sien.

    Si tu veux que ton site web puisse être modifié en faisant des requêtes dessus qui ajoutent des fichiers, il faut que tu programmes un système d'ajout de fichier dans ton site web. Tout comme quand tu veux créer un nouvel utilisateur, il faut que tu programmes un système d'ajout d'utilisateur. C'est la même chose.

    Quand tu veux qu'il soit possible de créer un utilisateur, tu fais une page PHP/servlet/whatever qui crée un utilisateur. Donc pour qu'il soit possible d'uploader un fichier, tu fais une page PHP/servlet/whatever qui reçoit un fichier envoyé dans la requête.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    mon application est une application java desktop, j'ai utilisé le service ftp pour uploader les fichier sur le serveur mais il dérange de temps en temps car il faut redémarrer le service pour que ça marche je voulais donc une solution simple et j'ai pensé que le http pourrai me rendre ce service. Je veux juste uploader des fichiers sur un serveur distant en utilisant ce service

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par junior222 Voir le message
    je voulais donc une solution simple et j'ai pensé que le http pourrai me rendre ce service.
    Ben non.

    Pour qu'un site web accepte qu'on lui envoie des fichiers, il faut qu'il soit programmé pour recevoir des fichiers.
    Tout comme pour qu'il accepte de créer des utilisateurs, il faut qu'il soit programmé pour créer des utilisateurs.

    C'est juste exactement la même chose.

    Tu devrais avoir l'intuition de comprendre, que le site de paiement des impôts ne va pas accepter que le premier Dupont qui passe aille mettre ses fichiers persos dessus juste parce qu'il a pas envie de payer pour son propre hébergement de fichiers. On ne peut pas envoyer de fichier par HTTP si le site web n'est pas programmé pour accepter qu'on le fasse.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    Si je comprend bien je dois écrire un servelet coté serveur qui fera le transfert proprement dit que je dois appeler à partir de mon application. Comment puis-je faire donc vous pouvez me donner des pistes pour l'écriture de cet applet java?

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

Discussions similaires

  1. Applet pour upload de fichiers sur un serveur via WebDav
    Par melvar dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 08/04/2008, 14h37
  2. [c#][asp.net2] upload de fichiers sur un serveur
    Par skystef dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/02/2007, 09h24
  3. [Upload] Upload de fichier sur le serveur
    Par jbr_85 dans le forum Langage
    Réponses: 4
    Dernier message: 07/02/2007, 16h55
  4. Réponses: 3
    Dernier message: 20/04/2006, 23h21
  5. Upload de fichier sur le serveur
    Par krfa1 dans le forum ASP
    Réponses: 9
    Dernier message: 29/11/2005, 13h50

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