2017-08-25 67 views
0

我有一個Spring MVC的項目,我有這個JavaScript其中#文件0-1文件是輸入文件IDjQuery的AJAX文件春天控制器

function foo(){ 
var token = $("meta[name='_csrf']").attr("content"); 
var header = $("meta[name='_csrf_header']").attr("content"); 
var formData = new FormData(); 

formData.append('file', $("#file-0-1-file")[0].files[0]); 

$.ajax({ 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader(header, token); 
    }, 
    dataType : 'json', 
    url: "../projectRest/file", 
    data: formData, 
    processData: false, 
    contentType: false, 
    cache:false, 
    method: 'POST',   
    enctype: 'multipart/form-data',   
    success: function (r) { 
     console.log("success: " + r); 
    }, 
    error: function (e) { 
     console.log("error: " + e); 
    } 
}); 
} 

,我要在這裏接受

@RestController 
@RequestMapping("projectRest") 
public class ProjectRestController { 

    @PostMapping("file") 
    public ResponseEntity<SuccessMessage> save(@RequestParam("file") MultipartFile file) { 

     return new ResponseEntity<>(new SuccessMessage("All right!"), HttpStatus.OK); 
    } 
} 

這裏我的頭請求

Request Headers 
Accept:application/json, text/javascript, */*; q=0.01 
Accept-Encoding:gzip, deflate, br 
Accept-Language:pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,it;q=0.2 
Connection:keep-alive 
Content-Length:233496 
Content-Type:multipart/form-data; boundary=---- 
WebKitFormBoundarys7qql1M65DsDjZ2U 
Cookie:JSESSIONID=9v29UqpaxZsQVSyUg7qeluFg8xeq-6-NWxeU1hk3.diego-pc 
DNT:1 
Host:localhost:8080 
Origin:http://localhost:8080 
Referer:http://localhost:8080/songCommunityFactory/project/new 
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36 
X-CSRF-TOKEN:d46a9a50-25fe-43a8-a15c-3d0bf6a22ff2 
X-Requested-With:XMLHttpRequest 

Request Payload 
------WebKitFormBoundarys7qql1M65DsDjZ2U 
Content-Disposition: form-data; name="file"; filename="IMG-20160528-WA0005.jpg" 
Content-Type: image/jpeg 


------WebKitFormBoundarys7qql1M65DsDjZ2U-- 

,這裏是結果

org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present 

org.springframework.web.method.annotation.RequestParamMethodArgumentResolver. handleMissingValue (RequestParamMethodArgumentResolver.java:193) 

我嘗試了很多東西,我不斷收到「必需的請求部分‘文件’不存在」,我不知道是什麼問題,每件事情都出現我

回答

0

顯然,我需要配置一個豆multipartResolver爲允許我上傳的文件,所以我創建

@Bean(name = "multipartResolver") 
public CommonsMultipartResolver createMultipartResolver() { 
    CommonsMultipartResolver resolver = new CommonsMultipartResolver(); 
    resolver.setDefaultEncoding("utf-8"); 
    return resolver; 
} 

現在工作正常。

0
在你的Ajax

嘗試改變成這樣的:

$.ajax({ 
    ... 
    data : {file : formData}, 
    ... 
}); 
+0

感謝古斯蒂,我現在嘗試我有一個不同的錯誤:當前請求不是多部分請求...任何猜測? –