日付でUNBUFFEREDファイルストレージ用コモンズ、ファイルアップロード

JSP

1 <% -
 2    のIntelliJ IDEAによって作成。
3    ユーザー:GHH
 4    日:2019年9月1日
 5    時間:午後02時27分
 6    変更するには、このテンプレートを使用するファイルを| 設定| ファイルのテンプレート。
7 - %>
 8 <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "javaの" %>
 9 <HTML>
 10    <ヘッド>
 11      <タイトル>文件上传</タイトル>
 12    < / HEAD>
 13    <body>
 14    <FORM ACTION = "$ {pageContext.request.contextPath} / uploadServlet" METHOD = "POST"のenctype =」
     <input type = "ファイル" NAME = "画像" ID = "画像"> <BR>
 16      の<input type = "提出"値= "上传">
 17    </フォーム>
 18    </ BODY>
 19 </ HTML>

サーブレット

パッケージcom.ghh.upload。

輸入org.apache.commons.fileupload.FileItem; 
輸入org.apache.commons.fileupload.FileItemFactory; 
輸入org.apache.commons.fileupload.FileUploadException。
輸入org.apache.commons.fileupload.disk.DiskFileItemFactory; 
輸入org.apache.commons.fileupload.servlet.ServletFileUpload。

輸入javax.servlet.ServletException; 
輸入javax.servlet.annotation.WebServlet; 
輸入javax.servlet.http.HttpServlet。
インポートのjavax.servlet.http.HttpServletRequest; 
インポートのjavax.servlet.http.HttpServletResponse; 
インポートのjava.io.File; 
輸入java.io.FileOutputStreamは、
インポートにjava.io.IOException; 
輸入java.io.InputStreamを。
輸入java.time.LocalDate。
輸入はjava.util.List; 
輸入java.util.UUID。

/ ** 
 * @author GHH 
 *の@date 2019年9月1日14時32分
 * @description 
 * / 
@WebServlet(名= "UploadServlet"、urlPatterns = { "/ uploadServlet"})
publicクラスUploadServletはHttpServletを{延び
    保護ボイドdoPostメソッドを(HttpServletRequestのリクエスト、HttpServletResponseの応答)はServletExceptionがは、IOException {スロー
        のdoGet(要求、応答)。
    } 

    保護されたボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答)ServletExceptionがは、IOExceptionが{スロー
        入力ストリームは= nullです。
        FileOutputStreamのFileOutputStream = NULL;

        isMultipart = ServletFileUpload.isMultipartContentブール(要求); 
        IF(!isMultipart){ 
            スローのRuntimeException新新( "要求は、ファイルのアップロードをサポートしていません"); 
        } 
        DiskFileItemFactoryアイテムファクトリ新しい新DiskFileItemFactory =(); 
        //ファイルをアップロード3Mより一時ファイル大きな始まりディレクトリ
        itemFactory.setSizeThreshold(* 3 * 1024 1024); 
        //一時ファイルの格納ディレクトリを指定する
        文字列をTEMPPATH = this.getServletContext()getRealPath( "/ TEMP");. 
        するSystem.out.println( "TEMPPATH =" + TEMPPATH)。
        TEMP =新しい新しいファイルファイル(TEMPPATH); 
        IF {(temp.exists()!)
            temp.mkdirs(); 
        } 
        itemFactory.setRepository(TEMP)。
        ServletFileUpload servletFileUpload =新しいServletFileUpload(アイテムファクトリ)。
        試す{ 
            リスト<FileItem> fileItems = servletFileUpload.parseRequest(リクエスト)。
            (FileItem fileItem:fileItems)用{ 
                IF(fileItem.isFormField()){ 
                    //普通字段
                    文字列フィールド名= fileItem.getFieldName()。
                    ストリングfileValue = fileItem.getString( "UTF-8"); 
                    System.out.println(フィールド名+ "====" + fileValue)。
                }他{ 
                    文字列fileNameに= fileItem.getName()。
                    文字列が苦しむ= fileName.substring(fileName.lastIndexOf() "");
                    UUID UUID = UUID.randomUUID()。
                    fileNameに= UUID +苦しみます。
                    System.out.println( "ファイル名が=" + filename)で。 
                    //入力ストリームを取得
                    = fileItem.getInputStream(IS); 
                    //出力ストリームを作成
                    文字列のパスを= this.getServletContext()getRealPath( "/アップロード");. 
                    //日付によると、マルチレベルのディレクトリを作成
                    LOCALDATE LocalDate.now =今(); 
                    int型の年= now.getYear(); 
                    int型=月now.getMonthValue(); 
                    int型= now.getDayOfMonth日(); 
                    パス=パス+ File.separator +年+ File.separator + + +月File.separator日; 
                    System.out.printlnは( "パス=" +パス); 
                    //親ディレクトリを作成します
                    parentDirファイル=新しいファイル(パス); 
        }最後に { 
                    IF {(parentDir.exists()!)
                        parentDir.mkdirs(); 
                    } 
                    ファイルファイル=新しいファイル(パス、ファイル名)。
                    FileOutputStream =新たFileOutputStream(ファイル); 
                    バイト[]バイト=新しいバイト[1024]; 
                    int型のlen = -1; 
                    一方、(!(LEN = is.read(バイト))= - 1){ 
                        fileOutputStream.write(バイト0、LEN)。
                    } 
                    fileItem.delete()。
                } 
            } 
        }キャッチ(FileUploadException電子){ 
            e.printStackTrace(); 
            {試みる
                is.closeを();
                fileOutputStream.close(); 
            }キャッチ(例外e){ 
                e.printStackTrace(); 
            } 

        } 

    } 
}

  

 

おすすめ

転載: www.cnblogs.com/gaohuanhuan/p/11442416.html