springbootノート - ファイルのアップロード

春ブーツとThymeleafアップロードファイルを使用します

春ブーツMultipartFile使用特性を受信すると、プロセスアップロードされたファイルは、本実施Thymeleafは、フロントページを処理するために使用されます。

クイックスタート:

1、依存関係を追加

    <依存性> 
        <のgroupId> org.springframework.boot </のgroupId> 
        <たartifactId>ばねブートスタータウェブ</たartifactId> 
    </依存> 
    <依存性> 
        <のgroupId> org.springframework.boot </のgroupId> 
        <たartifactId >春・ブート・スタータthymeleaf </たartifactId> 
    </依存関係>

 

2、application.properties構成情報

#サポートされる最大ファイル
spring.servlet.multipart.max -fileサイズ= 100MBの
#ファイルが上限要求
spring.servlet.multipart.max -requestサイズ= 100メガバイトを

次のように上記構成に加えて#は、あまりにも、一般的な設定情報は次のとおりです。
trueに=をspring.servlet.multipart.enabled、マルチパートアップロードファイルをサポートするかどうかを
spring.servlet.multipart.fileサイズ閾値= 0、ディスクに書き込まれたサポートファイル
spring.servlet。 multipart.location =、ファイルをアップロードするために一時ディレクトリ
spring.servlet.multipart.maxファイルサイズ= 10Mbのを、最大ファイル・サイズをサポート
spring.servlet.multipart.max要求-sizee = 10Mbの、最大のサポート要求サイズ
spring.servletを。 multipart.resolve-レイジー遅延ロードサポートマルチパートアップロードファイルかどうか、偽=

 

3、クラスを開始

@SpringBootApplication
 パブリック クラスFileUploadWebApplication { 

    公共 静的 ボイドメイン(文字列[]引数)は例外{スロー
        SpringApplication.run(FileUploadWebApplication クラス、引数)を、
    } 

    // Tomcatの大きいファイルのアップロード接続がリセット
    @Bean
     パブリック(TomcatServletWebServerFactory tomcatEmbedded)を{ 
        TomcatServletWebServerFactoryのTomcat = 新しいTomcatServletWebServerFactory()。
        tomcat.addConnectorCustomizers((TomcatConnectorCustomizer)コネクタ - > {
             もし(<?>(connector.getProtocolHandlerは()のinstanceof AbstractHttp11Protocol )){
                 // -1は無制限を意味する 
                。(<?>(AbstractHttp11Protocol)connector.getProtocolHandler())setMaxSwallowSize( - 1 )。
            } 
        })。
        戻るTomcatを。
    } 
}

TomcatServletWebServerFactory()メソッドは、10Mの接続リセットを超えるファイルをアップロードする問題を解決することです

 

4、シンプルなフロントページ:

  単一ファイルのアップロードページのupload.html:

    <!DOCTYPE HTML > 
    < HTML のxmlns:目= "http://www.thymeleaf.org" > 
    < 身体> 
    < H1 >春のブートファイルアップロードの例</ H1 > 
    < フォームのメソッド= "POST" アクション= "/アップロード" のenctype = "マルチパート/フォームデータ" > 
        < 入力タイプ= "ファイル" = "ファイル"  /> < BR /> < BR /> 
        < 入力タイプ= "送信" 
    フォーム> 
    </ ボディ> 
    </ HTML >

 

 

  複数のファイルアップロードページuploadMore.html:

<!DOCTYPE HTML > 
    < HTML のxmlns:目= "http://www.thymeleaf.org" > 
    < 身体> 

    < H1 >春のブートファイルはアップロードの例</ H1 > 

    < フォームメソッド= "POST" アクション= "/ uploadMore" のenctype = "マルチパート/フォームデータ" > 
        < 入力タイプ= "ファイル" = "ファイル"  /> < BR /> < BR /> 
        < 入力タイプ= "ファイル" /> < BR /> 
        < 入力タイプ= "ファイル" = "ファイル"  /> < BR /> < BR /> 
        < 入力タイプ= "提出" = "送信"  /> 
    </ フォーム> 

    </ ボディ> 
    </ HTML >

uploadStatus.html:結果ページをアップロード

<!DOCTYPE HTML > 
    < HTML LANG = "EN" のxmlns:目= "http://www.thymeleaf.org" > 
    < 身体> 

    < H1 >春ブーツ-アップロードステータス</ H1 > 

    < divの目:もし= "$ {メッセージ}」> 
        < H2 番目:テキスト= "$ {メッセージ}" /> 
    </ DIV > 
    </ ボディ> 
    </ HTML >

 

5、バックグラウンドアップロードコントロールクラス

@Controller
 パブリック クラスUploadController { 
    
    // ファイル格納ディレクトリ
    プライベート文字列upload_path =: "E // // TEMP" ; 

    // ジャンプアップロードページの 
    @RequestMapping( "/" パブリック文字列のインデックス(){
         リターン "アップロード" ; 
    } 
    
    
    @GetMapping( "/詳細" パブリック文字列uploadMore(){
         リターン "uploadMore" ; 
    } 
    
    // ファイルアップロード複数の 
    @RequestMapping( "/ uploadMore" パブリック文字列moreFileUpload(@RequestParam( "ファイル")MultipartFile []ファイル、RedirectAttributes redirectAttrs){
         場合(files.length == 0 ){ 
            redirectAttrs.addFlashAttribute( "メッセージ"、 "アップロードするファイルを選択してください" )。
            戻る:「uploadStatusをリダイレクトします」
        } 
        
        ため(MultipartFileファイル:ファイル){
             試みる{
                 バイト []バイト=用)(file.getBytesします。
                パスパス = Paths.get(UPLOAD_PATH + file.getOriginalFilename())。
                Files.write(パス、バイト)。
            } キャッチ(IOExceptionを電子){
                e.printStackTrace(); 
            } 
        } 
        redirectAttrs.addFlashAttribute( "メッセージ"  "あなたは成功したすべてのファイルをアップロード" );
        リターンは、「リダイレクト:/ uploadStatusを」
    } 
    
    
    // 单个文件上传 
    @PostMapping( "/アップロード" パブリック文字列singleFileUpload(@RequestParam( "ファイル" )MultipartFileファイル、RedirectAttributes redirectAttrs){
         場合(file.isEmpty()){ 
            redirectAttrs.addFlashAttribute( "メッセージ"、 " 「アップロードするファイルを選択してください)。
            "リダイレクト:uploadStatusを" ; 
        }
        
        試す{
             バイト []バイト= )(file.getBytesします。
            パスパス = Paths.get(UPLOAD_PATH + file.getOriginalFilename())。
            Files.write(パス、バイト)。
            redirectAttrs.addFlashAttribute( "メッセージ"  "あなたは正常にアップロード'" + file.getOriginalFilename()+ "'" ); 
        } キャッチ(IOExceptionを電子){ 
            e.printStackTrace(); 
        } 
        
        戻り "リダイレクト:/ uploadStatus" 
    } 
    
    // 跳转结果页面
    ( "/ uploadStatus" @RequestMapping パブリック文字列uploadStatus(){
         リターン "uploadStatus" 
    } 
}

 

6、実行起動クラス: FileUploadWebApplication 

ブラウザでは、に行きます:

  

       

 

 

  複数のファイルのアップロード:

       

      

 

 

OK、正常にアップロード。

 

おすすめ

転載: www.cnblogs.com/qq99514925/p/11570637.html