spring-boot - 更新表格以包含图像
问题描述
我已经成功创建了一个实体并可以发布到它。我希望能够使用 blob 文件更新表的列。当我发出发布请求时,我得到了成功响应,但是该行没有更新
这是实体
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Service
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long categoryId;
@NotNull
@Column(unique=true)
@Size(min = 5, max = 20)
private String categoryName;
@Column(columnDefinition = "MEDIUMBLOB")
private byte[] categoryImage;
@NotNull
@Size(min = 10, max = 50)
private String categoryDescription;
}
图片上传的 PUT 请求
@PutMapping("/categories/{categoryId}/upload")
public ResponseEntity<ResponseMessage> uploadImage(@PathVariable("categoryId") long catID,
@RequestParam() MultipartFile file) {
Optional<Category> category = catService.listCategoryById(catID);
if (category.isPresent()) {
try {
Category _category = category.get();
_category.setCategoryImage(imgService.storeImage(file));
return new ResponseEntity<>(
new ResponseMessage("Uploaded " + file.getOriginalFilename() + " successfully!"),
HttpStatus.CREATED);
} catch (Exception e) {
return new ResponseEntity<>(new ResponseMessage("Failed to upload " + file.getOriginalFilename() + "!"),
HttpStatus.EXPECTATION_FAILED);
}
} else {
return new ResponseEntity<>(new ResponseMessage("Category Does not exist"), HttpStatus.NOT_FOUND);
}
}
影像服务
@Service
public class ImageService {
public byte[] storeImage(MultipartFile file) throws IOException {
return file.getBytes();
}
}
当我执行 PUT 请求时,我得到了这个
但是数据库没有更新。图像列保持为空
你知道为什么吗?
解决方案
我在您的控制器代码中没有看到 service.save() 调用。你在坚持那个 _category 实体吗?
try {
Category _category = category.get();
_category.setCategoryImage(imgService.storeImage(file));
categoryService.save(_category);
return new ResponseEntity<>(
new ResponseMessage("Uploaded " + file.getOriginalFilename() + " successfully!"),
HttpStatus.CREATED);
} catch (Exception e) {
return new ResponseEntity<>(new ResponseMessage("Failed to upload " + file.getOriginalFilename() + "!"),
HttpStatus.EXPECTATION_FAILED);
}
推荐阅读
- azure - 如何使 Azure 备份与 Terraform 一起使用?
- python - 我的列表索引超出范围,我不知道该怎么办
- sql - $substr 不适用于 mongodb compass 社区
- vue.js - Vue Workbox Webpack“不能在模块外使用 import 语句”
- c# - 无法识别文本 C# 的编码
- javascript - 将数据解析为 CSV 发送电子邮件使用 nodeMailer Node.JS
- python - 打印矩阵中2条对角线之和的绝对值(python)
- neo4j - Micronaut 和 Neo4j 的 ResultConsumedException:无法再访问此结果的记录,因为结果已被使用
- r - 根据r中同一行中其他元素的值更改数据框值
- java - 如何在 HTML 中加载 java 框架 jar 文件