Partage
  • Partager sur Facebook
  • Partager sur Twitter

FileUpload

upload de fichier avec FileUplad

    26 septembre 2011 à 17:15:37

    Bonjour tout le monde

    je suis face à problème que je n'arrive à résoudre. Débutant en jsp j'essaie d'uploader un fichier à partir d'un formulaire vers une servlet. Après quelques recherches je tombe sur FileUpload.

    j'essaie le code suivant.
    DiskFileItemFactory factory= new DiskFileItemFactory();
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		List items=null;
    		try {
    			 items=upload.parseRequest(request);
    			 Iterator i=items.iterator();
    				while(i.hasNext()){
    					FileItem item=(FileItem)i.next();
    					if(!item.isFormField()){																
    item.write(new File(item.getName()));	
    						System.out.println(item.getName());	
    					}
    				}
    		} catch (Exception e) {e.printStackTrace();}
    


    Je n'ai aucune erreur qui s'affiche et je vais dans mon dossier de projet rien n'a été uploadé.

    Un coup de main s'il vous plait pour me dépanner
    • Partager sur Facebook
    • Partager sur Twitter
      27 septembre 2011 à 3:42:03

      Salut,

      Quelle API Servlet utilises-tu ? Si c'est la 3.0 (Tomcat 7.0.7 et ultérieurs), alors tu peux directement traiter les données envoyées par ton formulaire (spécifié en enctype="multipart/form-data" ) avec request.getParts() :
      // La méthode doPost() de ta servlet
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          for (Part part : request.getParts()) {
              String filename = getFilename(part);
              if (filename == null) {
                  // Traiter les champs de formulaires classiques (input type="text|radio|checkbox|etc", select, etc).
                  String fieldname = part.getName();
                  String fieldvalue = getValue(part);
                  // ... (traitements à réaliser ici)
              } else if (!filename.isEmpty()) {
                  // Traiter les champs de formulaires de type fichier (input type="file").
                  String fieldname = part.getName();
                  filename = filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
                  InputStream filecontent = part.getInputStream();
                  // ... (traitements à réaliser ici)
              }
          }
      
          // ...
      }
      
      // Méthode utilitaire pour récupérer le nom du fichier
      private static String getFilename(Part part) {
          for (String cd : part.getHeader("content-disposition").split(";")) {
              if (cd.trim().startsWith("filename")) {
                  return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
              }
          }
          return null;
      }
      
      // Méthode utilitaire pour récupérer le contenu
      private static String getValue(Part part) throws IOException {
          BufferedReader reader = new BufferedReader(new InputStreamReader(part.getInputStream(), "UTF-8"));
          StringBuilder value = new StringBuilder();
          char[] buffer = new char[1024];
          for (int length = 0; (length = reader.read(buffer)) > 0;) {
              value.append(buffer, 0, length);
          }
          return value.toString();
      }
      
      • Partager sur Facebook
      • Partager sur Twitter

      FileUpload

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown