2017-07-12 2 views
0

1.3.8からSpring Boot 1.5.2にアップグレードした後、私たちのストリーミングファイルアップロードは機能しなくなりました。Springブート1.5にアップグレードした後、Apache Commons fileupload FileItemIteratorに要素がありません

ここに設定があります。 1.3.1

  • がapplication.yml
  • でこれを指定することで、ファイルアップロード組み込みTomcatを無効にmultipart.enabled:

    1. は、コモンズ、ファイルアップロードなどが偽を

      import org.apache.commons.fileupload.FileItemIterator; 
      import org.apache.commons.fileupload.servlet.ServletFileUpload; 
      ... 
      @RequestMapping(
          value = '/upload , 
          method = RequestMethod.POST, 
          produces = MediaType.APPLICATION_JSON_VALUE 
      ) 
      public ResponseEntity<MyObject> uploadFile(HttpServletRequest request) { 
          ResponseEntity<MyObject> retval = null; 
          boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
          if (isMultipart) { 
           ServletFileUpload upload = new ServletFileUpload(); 
           FileItemIterator iter = upload.getItemIterator(request); <<< 
           // iter contains no elements when using SpringBoot 1.5.2 
           // iter does contain the expected elements when using SpingBoot 1.4.+ 
           // I tried commons-fileupload:1.3.1 and 1.3.3 
           while (iter.hasNext()) { <<< no elements when using Spring boot 1.5 
            ... 
           } 
           ... 
      } 
      
    +0

    こんにちは、[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)を作成する方法と[よくある質問を表示する方法](https ://stackoverflow.com/help/how-to-ask)ので、フィードバックや役に立つ回答を得る機会が増えます。 – DarkCygnus

    答えて

    0

    でSpringブートバージョン1.4では、マルチパート名前空間がspring.http.multipartに変更されました。ディスクに書き込む埋め込みのTomcatファイルアップロードを無効にするSpringブートStandardServletMultipartResolverを無効にするには、代わりに新しい環境プロパティを設定する必要があります。

    私はapplication.yml

    でこれを行うには、spring.http.multipart.enabled:偽

    これが可能にコモンズ、ファイルアップロードが私の環境で再び動作するように、ディスクへの書き込みO/Wストリーミング。

    関連する問題