在我的网络应用程序中,我想允许"客户端用户"上传大量图像文件,以及"客户端用户"必须能够看到上传图像文件的网格。
在这种情况下,所有图像文件都有权上传,阅读,删除和编辑操作。
基本上我使用的是java技术,但我有点怀疑,
答案 0 :(得分:0)
转到此repository并转到display-image-from-db
分支。基本方法如下:
在您拥有的实体中:
@Lob
private Byte[] image;
ImageController.java
- 您通过MultipartFile
@PostMapping("recipe/{id}/image")
public String handleImagePost(@PathVariable String id, @RequestParam("imagefile") MultipartFile file){
imageService.saveImageFile(Long.valueOf(id), file);
return "redirect:/recipe/" + id + "/show";
}
调用imageService
保存通过file
作为参数的图片。
该服务基本上将图像内容复制到字节数组,最后将此字节数组分配给您的实体。
@Override
@Transactional
public void saveImageFile(Long recipeId, MultipartFile file) {
try {
Recipe recipe = recipeRepository.findById(recipeId).get();
Byte[] byteObjects = new Byte[file.getBytes().length];
int i = 0;
for (byte b : file.getBytes()){
byteObjects[i++] = b;
}
recipe.setImage(byteObjects);
recipeRepository.save(recipe);
} catch (IOException e) {
//todo handle better
log.error("Error occurred", e);
e.printStackTrace();
}
}
对于完整的源代码,请转到repo,这肯定会有所帮助。 但是我强烈建议将文件存储在磁盘上,而不是存储在数据库中。 DB应该只存储文件的路径。对于这样的解决方案,这里有一个例子:link
<强> TL; DR 强>
干杯!