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 :

[HTTP]Envoyer un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut [HTTP]Envoyer un fichier
    Bonsoir

    Est-il possible d'envoyer un fichier sur un serveur via une requete http. Je voudrais éviter de passer par du ftp (car aucune lib issue de sun dans le jre)

    Merci d'avance...

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    2 possibilités :
    Soit tu envoies une requête POST vers un script/programme qui pourra traiter correctement le fichier. Pour ce faire, il y a pas mal de tutoriels sur le net.

    Soit tu envoies une requête PUT pour autant que le serveur la comprenne correctement

  3. #3
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    Citation Envoyé par dingoth Voir le message
    2 possibilités :
    Soit tu envoies une requête POST vers un script/programme qui pourra traiter correctement le fichier. Pour ce faire, il y a pas mal de tutoriels sur le net.

    Soit tu envoies une requête PUT pour autant que le serveur la comprenne correctement
    tu as un exemple pour chacun ou un lien....je sais pas si ce que je trouve correspond

    merci

  4. #4
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    j'ai trouvé des trucs pas mal, mais qui utilise la classe HttpServlet, que je n'ai pas, ca doit etre dans le J2EE et moi je bosse avec le J2RE...

    donc...je vois pas trop comment faire, une idée, un exemple ?

  5. #5
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    Toujours personne ?

    alors je détails un peu plus...

    de mon appli java, je veux envoyer un fichier, vers un fichier php qui va faire qq traitements...et par la meme uploader le fichier sur le serveur...

    le fichier php est "prêt" il manque plus que l'envoie...mais j'ai du mal pour l'envoie...

    ah oui...je suis en jre 1.5 aussi ca peut (pas) aider

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Points : 51
    Points
    51
    Par défaut
    Je serais aussi intéressé par la réponse, personne ne peut nous donner une piste, un lien un bout de code, qqch ?

  7. #7
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Citation Envoyé par Piolet Voir le message
    j'ai trouvé des trucs pas mal, mais qui utilise la classe HttpServlet, que je n'ai pas, ca doit etre dans le J2EE et moi je bosse avec le J2RE...
    Tu as juste a rajouter ce jar : javax-servlet téléchargeable ici :
    http://www.docjar.com/downloadjar.js...2003-05-04.jar

  8. #8
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    ou alors tu as l'option chercher dans la

    cf la

    et google un peu avec la classe urlConnection si ça ne te suffit pas...

  9. #9
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Pour envoyer un fichier :
    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
    public class ServFichier extends HttpServlet {
    public void doPost (HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
    String file=pathDeTonFichier;
     
    //On utilise un ServletOutputStream car on passe des informations binaires
    ServletOutputStream out = res.getOutputStream();
     
    if (file == null) return;
     
    // On récupère le type Mime du fichier pour définir le ContentType de la transmission
    String contentType = getServletContext().getMimeType(file);
    res.setContentType(contentType);
     
    // On récupère la longueur du fichier à transmettre : garder la connexion ouverte pour tout le fichier
    res.setContentLength((int)new File(file).length());
     
    try {
    // Envoi du fichier
    returnFile(file, out);
    }
    catch (FileNotFoundException e) {
    }
    catch (IOException e) {
    }
    }

    Pour Ecrire le fichier dans le flux de sortie

    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
    private void returnFile(String filename, OutputStream out) throws FileNotFoundException, IOException {
    FileInputStream fis = null;
    try {
    // ouverture du flux de lecture;
    fis = new FileInputStream(filename);
     
    // création d'un buffer de 4Ko ( améliore la vitesse de transmission)
    byte[] buf = new byte[4 * 1024];
    int bytesRead;
    while ((bytesRead = fis.read(buf)) != -1) {
    //Ecriture dans le flus de sortie
    out.write(buf, 0, bytesRead);
    }
    }
    finally {
    // Fermeture du flux d'entrée
    if (fis != null) fis.close();
    }
    }
    }

  10. #10
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Tu as juste a rajouter ce jar : javax-servlet téléchargeable ici :
    http://www.docjar.com/downloadjar.js...2003-05-04.jar
    LA FAQ j'avais vu...ca marche bien pour un paramètre simple, mais pour plusieurs...je bloque ...et pour le fichier ca marche po

    mais le HttpServlet, je vais étudier ca de près...merci beaucoup

  11. #11
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Pour envoyer un fichier :
    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
    public class ServFichier extends HttpServlet {
    public void doPost (HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
    String file=pathDeTonFichier;
     
    //On utilise un ServletOutputStream car on passe des informations binaires
    ServletOutputStream out = res.getOutputStream();
     
    if (file == null) return;
     
    // On récupère le type Mime du fichier pour définir le ContentType de la transmission
    String contentType = getServletContext().getMimeType(file);
    res.setContentType(contentType);
     
    // On récupère la longueur du fichier à transmettre : garder la connexion ouverte pour tout le fichier
    res.setContentLength((int)new File(file).length());
     
    try {
    // Envoi du fichier
    returnFile(file, out);
    }
    catch (FileNotFoundException e) {
    }
    catch (IOException e) {
    }
    }

    Pour Ecrire le fichier dans le flux de sortie

    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
    private void returnFile(String filename, OutputStream out) throws FileNotFoundException, IOException {
    FileInputStream fis = null;
    try {
    // ouverture du flux de lecture;
    fis = new FileInputStream(filename);
     
    // création d'un buffer de 4Ko ( améliore la vitesse de transmission)
    byte[] buf = new byte[4 * 1024];
    int bytesRead;
    while ((bytesRead = fis.read(buf)) != -1) {
    //Ecriture dans le flus de sortie
    out.write(buf, 0, bytesRead);
    }
    }
    finally {
    // Fermeture du flux d'entrée
    if (fis != null) fis.close();
    }
    }
    }
    il manque l'appel a la methode doPost, et du coup en cherchant, je vois que des appels dans une JSP...alors que moi j'ai pas le 2eme argument de la méthode sous la main...donc un peu plus chiant que prévu

  12. #12
    Membre habitué Avatar de Piolet
    Inscrit en
    Février 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 469
    Points : 160
    Points
    160
    Par défaut
    et avec l'autre méthode (de jakarta) j'ai un retour "pas bon" de ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    12 mars 2008 22:13:53 org.apache.commons.httpclient.HttpMethodBase getResponseBody
    ATTENTION: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
    got it<br><br>wrote it<br><br />
    <b>Warning</b>:  fread() [<a href='function.fread'>function.fread</a>]: Length parameter must be greater than 0 in <b>/homepages/14/d230523123/htdocs/2.0/myupload.php</b> on line <b>13</b><br />
    visiblement ce que recoit mon script php est....vide
    et ce script ressemble a ca
    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
     
    <?php
     
    echo "got it<br>";
    $filecontent = $_POST['myfile'];
     
    $myFile = "toto.jpg";
    echo $filecontent."<br>";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $filecontent);
    fclose($fh);
    echo "wrote it<br>";
    $fh = fopen($myFile, 'r') or die("can't open file");
    echo fread($fh, filesize ($myFile));
     
    fclose($fh);
     
    ?>

Discussions similaires

  1. Envoyer un fichier en HTTP (POST )
    Par phy4me dans le forum Langage
    Réponses: 5
    Dernier message: 14/10/2009, 13h28
  2. Envoyer un fichier par http
    Par Webselect dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/06/2009, 10h53
  3. Quel langage pour envoyer un fichier sur une adresse
    Par dai.kaioh dans le forum Développement
    Réponses: 2
    Dernier message: 02/04/2004, 16h38
  4. Réponses: 1
    Dernier message: 19/08/2003, 16h11

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