Maison  >  Article  >  Java  >  Exemple de code d'utilisation de FileUpload pour terminer le téléchargement en Java

Exemple de code d'utilisation de FileUpload pour terminer le téléchargement en Java

黄舟
黄舟original
2017-09-25 10:36:152000parcourir

Cet article présente principalement les informations pertinentes sur l'instance de téléchargement de FileUpload dans Java Advanced. J'espère que cet article pourra aider tout le monde. Les amis dans le besoin peuvent se référer à

FileUpload dans Java Advanced Exemple terminé. télécharger

FileUpload est un sous-projet sous Apache commons, utilisé pour implémenter la fonction de téléchargement de fichiers sous les projets Java. Les téléchargements de fichiers courants incluent SmartUpload, Servlet3.0 et Struts2.

Ici, j'utilise commons-fileupload-1.2.1 Voici un exemple simple Le processus d'analyse est écrit dans les commentaires du code. Les commentaires sont très détaillés

.


//创建磁盘文件项工厂 
      DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory(); 
      //设置缓冲区的大小,如果文件的大小超过了缓冲区的大小,就会产生临时文件 
      diskFileItemFactory.setSizeThreshold(1024*1024*3); 
      //获得核心解析类 
      ServletFileUpload fileUpload=new ServletFileUpload(diskFileItemFactory); 
      //解决中文文件名上传乱码 
      fileUpload.setHeaderEncoding("UTF-8"); 
      //解析request,返回list集合 
      List<FileItem> list = fileUpload.parseRequest(request); 
      //获得每个部分,将遍历的值存入到一个map集合中 
      Map<String, String> map=new HashMap<>(); 
      //设置上传文件的文件名 
      String fileName=null; 
      for (FileItem fileItem : list) { 
        //判断普通项和文件上传项 
        if (fileItem.isFormField()) { 
          //普通项 
          String name=fileItem.getFieldName(); 
          String value=fileItem.getString("UTF-8"); 
          map.put(name, value); 
        }else { 
          //文件上传项 
          //获得文件名 
          fileName=fileItem.getName(); 
          //获得文件的输入流 
          InputStream is=fileItem.getInputStream(); 
          //获得文件上传的路径 
          String path=this.getServletContext().getRealPath("/products/1"); 
          OutputStream os=new FileOutputStream(path+"/"+fileName); 
          int len=0; 
          byte[] b=new byte[1024]; 
           
          while ((len=is.read(b))!=-1) { 
            os.write(b, 0, len); 
          } 
          is.close(); 
          os.close(); 
        }

Le composant FileUpload utilise la fabrique FileItemFactory pour créer un nouvel élément de fichier. Cela donne au composant FileUpload beaucoup de flexibilité. Cette usine a le contrôle final sur la façon dont les projets sont créés. Les données temporaires des fichiers de projet téléchargés pendant l'exécution en usine peuvent être stockées en mémoire ou sur le disque dur. Cela dépend de la taille de l'élément téléchargé (c'est-à-dire : octets de données). Toutefois, ce comportement peut être personnalisé de manière appropriée dans votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn