spring-mvc - 如何将图像文件上传到数据库
问题描述
我无法将图像文件插入数据库。我可以在控制器部分编写与插入过程相关的代码片段。
我可以使用base64encode
图像处理。
我可以将图像定义为byte
部件,因为我将图像定义为Blob
在数据库部件中。
如果不正确,我该如何处理。
控制器部分
@PostMapping("/saveCustomer") // @RequestMapping(path = "/saveCustomer", method = RequestMethod.POST)
public String saveCustomer(@ModelAttribute("customer") Customer theCustomer,@RequestParam("image") MultipartFile file) {
System.out.println("/saveCustomer | File Name : "+file.getName());
byte[] imageBytes = new byte[(int) file.getSize()];
try {
FileInputStream fileInputStream = new FileInputStream(file.getOriginalFilename());
fileInputStream.read(imageBytes);
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
theCustomer.setImage(imageBytes);
// save the customer using our service
customerService.saveCustomer(theCustomer);
return "redirect:/customer/list";
}
客户类
public class Customer implements Serializable{
@Id
@SequenceGenerator(name="CUSTOMER_SEQ", sequenceName="CUSTOMER_SEQ", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CUSTOMER_SEQ")
@Column(name="ID", nullable = false)
private int id;
@Column(name="FIRSTNAME")
private String firstName;
@Column(name="LASTNAME")
private String lastName;
@Column(name="EMAIL")
private String email;
@Column(name="IMAGE")
private byte[] image;
@Transient
private String base64Image;
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
}
public String getBase64Image() {
base64Image = Base64.getEncoder().encodeToString(this.image);
return base64Image;
}
public void setBase64Image(String base64Image) {
this.base64Image = base64Image;
}
...
}
html部分
<tr>
<td>Image:</td>
<td><input type="file" name="photo" required="required"/>
</td>
</tr>
解决方案
您应该看看名为Spring Content的社区项目。
该项目为 Spring Resources 提供了对各种不同类型存储的抽象。
它提供了一个非常类似于 Spring Data 的编程模型,因此您可以免费获得很多样板实现。例如,无需定义您自己的控制器实现。
这里有入门指南,这里有各种不同数据库的示例。spring-content-jpa 和 spring-content-rest 的组合就足够了。这里也有一个很好的示例答案。
推荐阅读
- javascript - React/JS 数组表现不同
- vue.js - 是否可以将“v-for”中的迭代元素用作数据属性中的对象键?
- twilio - 如何在 twilio-freeswitch 中启用 G722
- facebook - 无效的密钥哈希。输入的密钥哈希与任何存储的密钥哈希都不匹配
- linux - 如何在shell脚本/bash中将.txt文件输出转换为表格格式[不是html表格格式]
- asp.net - 如何通过 Web.Config 在 cookie 中添加 SameSite:none
- jquery - 剑道ui网格弹出隐藏按钮
- python - Django - 覆盖/替换来自第 3 部分站点包的导入
- jquery - 使用 AJAX 的 JSON 响应数据表无效
- android - 如何在 Instagram 等键盘上方获取表情符号快捷栏?