Java進級のFileUploadがアップロードされた例

2243 ワード

Java進級のFileUploadがアップロードされた例
   FileUploadはApple comonsの下のサブプロジェクトで、Javaプロジェクトの下のファイルアップロード機能を実現するために使用されます。よくあるファイルアップロードはSmartUpload、Servlet 3.0、Struts 2があります。
     ここで使っているのはcommons-fileuplload-1.2.1です。以下は簡単な例です。解析過程は全部コードの注釈に書いてあります。コメントはとても詳しいです。

//          
      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(); 
        } 
     コンポーネントFileUploadはFileItem Factory工場を使って新しいファイルプロジェクトを作成します。これはコンポーネントFileUploadに大きな柔軟性を与えます。この工場はどのようにプロジェクトを作成する最終的なコントロール権を持っていますか?工場の実行中にプロジェクトファイルをアップロードする一時データはメモリやハードディスクに保存できます。これはアップロード項目のサイズ(すなわち、データのバイト)に依存します。しかし、このような行為はあなたのアプリケーションで適切にカスタマイズできます。
疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。