2015-03-31 56 views
9

我試圖構建與其他表單字段上傳文件的方法。春季MVC,上傳文件與其他字段

這是標準的HTML形式的文件和其他一些領域:

<form action="products" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="text" name="name"> 
    <input type="text" name="email"> 
    <input type="submit" value="Upload" name="submit"> 
</form> 

請注意:我想使用標準的HTML表單,而不是Spring表單標籤,如<form:form ...>

這是我的控制器方法:

@ResponseBody 
public MyDto createProduct(@RequestBody MyDto dto, @RequestParam MultipartFile file) { 

} 

但是我收到錯誤:Required request body content is missing

我應該如何構建我的web方法來接收文件以及DTO對象作爲參數?如果我可以將MultipartFile對象包含到MyDto中,它也會很好。發生

回答

10

你的問題會導致結合的第一個參數的值,當你的身體消耗,通過ommiting註釋爲DTO的框架將實例化,並從請求值

@ResponseBody 
    public MyDto createProduct(MyDto dto, @RequestParam MultipartFile file) { 

    } 

說明還填充了匹配屬性您可以在類型文件財產MultipartFile添加到您的MyDto例如,它會實例化和正確綁定一樣,所以只是

@ResponseBody 
public MyDto createProduct(MyDto dto) { 

} 
+0

在這種情況下,我得到'必需的MyDto參數'dto'不存在' – MyTitle 2015-03-31 14:06:42

+1

我現在已經正確回答了,原本我的主要觀點是不使用* @ RequestBody *,但實際上不應該用* @ RequestParam *忽略註釋altogheter會讓你想要的地方 – 2015-03-31 15:15:52

+1

我正在用Postman rest客戶端進行測試,並且JSON數據沒有用JSON請求進行映射,即將MyDto中的所有字段映射爲null – Anand 2015-11-16 07:02:14