我正在尝试开发REST API,该API用于使用hibernate将数据保存在POSTGRESQL中。 该REST API基本上是在注册过程中保存用户的个人资料,该个人资料包含一张图片和其他4个String字段,例如姓名,性别,工作等。
我已成功将图像保存在数据库中。
现在我的问题是要同时保存图片和其他字段,例如一次点击API即可保存图片和其他字符串字段
用于保存图片的代码是
@RequestMapping(path="/a", method = RequestMethod.POST , consumes = MediaType.MULTIPART_FORM_DATA_VALUE)//
public void Saving(@RequestParam("file") MultipartFile file ) throws Throwable
{
EventSpeaker sp=new EventSpeaker();
sp.setPic(file.getBytes());
service.savespecker(sp);
}
答案 0 :(得分:0)
这是实现所需内容的一种方法。例如;假设您的<form>
如下所示。
<form id="form-id">
<input type="file" name="file"/>
<input type="text" id="gender"/>
<input type="text" id="job"/>
</form>
在控制器上;
@RestController
public class YourController {
@RequestMapping(path="/a", method = RequestMethod.POST , consumes = MediaType.MULTIPART_FORM_DATA_VALUE)//
public void Saving(@RequestParam("file") MultipartFile file,
@ModelAttribute("gender") String gender,
@ModelAttribute("job") String job) throws Throwable {
//your code
}
}
如您所见,图像文件必须使用其ID捕获为@RequestParam
,其他文本输入捕获为@ModelAttribute
。这些模型属性是从spring MVC模型中提取的。如果使用的是JQuery,则必须将这些表单输入添加到FormData
中。
有关@ModelAttribute
的工作原理的很好参考可以在这里找到; https://www.baeldung.com/spring-mvc-and-the-modelattribute-annotation