2017-07-12 116 views
0

從1.3.8升級到Spring Boot 1.5.2後,我們的流式文件上載不再有效。升級到Spring Boot 1.5後,Apache commons fileupload FileItemIterator沒有元素

這是設置。

  1. 包括公地文件上傳:1.3.1
  2. 禁用由在application.yml

指定該文件上傳嵌入的Tomcat multipart.enabled:假

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

嗨,歡迎來到Stack Overflow,請閱讀如何創建[最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve),並檢查[如何提出好問題](https ://stackoverflow.com/help/how-to-ask)所以你增加了獲得反饋和有用答案的機會。 – DarkCygnus

回答

0

在Spring Boot版本1.4,多部分名稱空間更改爲spring.http.multipart。要禁用Spring Boot StandardServletMultipartResolver並禁用寫入磁盤的嵌入式tomcat文件上載,則需要設置新的環境屬性。

我這樣做是application.yml

spring.http.multipart.enabled:假

這讓公地文件上傳流W/O寫入磁盤在我的環境重新工作。

相關問題