Forum Programmation.java Faire un upload

Posté par  .
Étiquettes : aucune
0
1
août
2008
Bonjour,

Quelle est le moyen le plus simple de faire un upload d'image dans une servlet ?

J'ai beau chercher je ne trouve rien de simple !

Merci d'avance !
  • # commons.fileupload

    Posté par  . Évalué à 3.

    Regarde du côté de commons.fileupload:
    http://commons.apache.org/fileupload/
    C'est fait pour simplifier ce genre de tâche.
    • [^] # Re: commons.fileupload

      Posté par  . Évalué à 2.

      Oui j'ai regarder ça, mais je ne vois pas comment
      j'upload une image et ensuite comme je l'enregistre...

      Parce que je recupere un objet, mais comment l'ecrire !


      FileItemFactory factory = new DiskFileItemFactory() ;
      ServletFileUpload upload = new ServletFileUpload(factory) ;
      upload.setSizeMax(9000) ;

      List items = upload.parseRequest(request) ;


      si j'ecris items.get(0), l'image n'est pas "valide"...
      • [^] # Re: commons.fileupload

        Posté par  . Évalué à 1.

        La liste que te renvoie parseRequest contient des FileItem, cf
        http://commons.apache.org/fileupload/apidocs/org/apache/comm(...)
        Tu n'a plus ensuite qu'à utiliser la méthode write de FileItem pour écrire les données dans un fichier. Tu peux aussi récupérer directement un OutputStream si tu veux faire autre chose que d'enregistrer dans un fichier.
        Pense aussi à faire le delete pour libérer rapidement les éventuels fichiers temporaires.

        D'une manière générale, lis la javadoc http://commons.apache.org/fileupload/apidocs/index.html elle contient généralement la majorité des informations nécessaires à une bonne utilisation de l'API.
        • [^] # Re: commons.fileupload

          Posté par  . Évalué à 2.

          Merci, je test ça demain quand j'arrive au bureau, mais apparemment j'ai été chercher midi à quatorze heure !

          Encore Merci !
        • [^] # Re: commons.fileupload

          Posté par  . Évalué à 2.

          Okay, j'ai un peu cherché, lu le javadoc et j'ai pondu ça :


          import java.io.PrintWriter ;
          import javax.servlet.ServletException ;
          import javax.servlet.http.HttpServlet ;
          import javax.servlet.http.HttpServletRequest ;
          import javax.servlet.http.HttpServletResponse ;

          import java.util.List ;
          import java.util.Iterator ;

          import org.apache.commons.fileupload.* ;
          import org.apache.commons.fileupload.disk.DiskFileItemFactory ;
          import org.apache.commons.fileupload.servlet.ServletFileUpload ;

          //import java.awt.image.BufferedImage ;
          //import javax.imageio.ImageIO ;

          import java.io.IOException ;
          import java.io.File ;

          public class upload extends HttpServlet {

          protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          response.setContentType("text/html;charset=UTF-8") ;
          response.setHeader("Pragma", "no-cache") ;
          response.setHeader("Cache-Control", "no-store") ;
          response.setHeader("Expires", "0") ;
          PrintWriter web = response.getWriter();
          String ImgDir="..\\temp\\" ;

          try {
          // Create a factory for disk-based file items
          DiskFileItemFactory factory = new DiskFileItemFactory();

          // Set factory constraints
          factory.setSizeThreshold(1024);
          factory.setRepository(new File("..\\temp\\"));

          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);

          // Set overall request size constraint
          upload.setSizeMax(10000000);

          // Parse the request
          List items=null ;
          if ( upload.isMultipartContent(request) ) {
          items = upload.parseRequest(request);// Process the uploaded items
          Iterator iter = items.iterator();
          while (iter.hasNext()) {
          FileItem item = (FileItem) iter.next();
          item.write(new File(ImgDir+item.getName())) ;
          }

          } else {
          web.println( "Rien d'envoyé !" ) ;
          }
          } catch ( FileUploadException FUE ) {
          web.println(FUE.toString()) ;
          } catch ( Exception Exc ) {
          web.println(Exc.toString()) ;
          } finally {
          web.close();
          }
          }

          // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
          /**
          * Handles the HTTP GET method.
          * @param request servlet request
          * @param response servlet response
          */
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          processRequest(request, response);
          }

          /**
          * Handles the HTTP POST method.
          * @param request servlet request
          * @param response servlet response
          */
          protected void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          processRequest(request, response);
          }

          /**
          * Returns a short description of the servlet.
          */
          public String getServletInfo() {
          return "Short description";
          }// </editor-fold>

          }



          Je te remercie, ça marche bien.
  • # POSTLET

    Posté par  . Évalué à 1.

    Ne cherches plus : postlet : http://postlet.com/
    • [^] # Re: POSTLET

      Posté par  . Évalué à 0.

      s/cherches/cherche/
    • [^] # Re: POSTLET

      Posté par  . Évalué à 2.

      Merci, mais il faut apparemment une partie cliente, et c'est pas le but ici.

      Mais encore merci !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.