如何在Spring Java中同时保存图像和该表的剩余字段(字符串)

时间:2019-01-28 10:24:43

标签: spring rest api

我正在尝试开发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);

   } 

1 个答案:

答案 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