想使用spring boot将图像导入mongodb
Posted
技术标签:
【中文标题】想使用spring boot将图像导入mongodb【英文标题】:Want to import image to mongo using springboot 【发布时间】:2020-11-11 15:16:50 【问题描述】:仅创建一个模型时遇到问题,创建了照片模型和收款人模型,但想将照片模型添加到收款人模型但不接受照片的二进制部分。尝试从邮递员发布时不断收到二进制错误,知道需要更改控制器但有点卡住,任何链接或对初学者的建议将不胜感激
//Payee model
public class Payee
@Id
private String id;
private Contact contact;
private String notes;
private String project;
private String member;
private Integer staffMember;
private Photo photo;
private BankAccount userBankAccount;
private PayeeBankAccount payeeBankAccountList;
//Payee constructor
public Payee(Contact contact, String notes, String project, String member, Integer staffMember,
Photo photo, BankAccount userBankAccount, PayeeBankAccount payeeBankAccountList)
this.contact = contact;
this.notes = notes;
this.project = project;
this.member = member;
this.staffMember = staffMember;
this.photo = photo;
this.userBankAccount = userBankAccount;
this.payeeBankAccountList = payeeBankAccountList;
// Getters and Setters
public String getId() return id;
public void setId(String id) this.id = id;
public Contact getContact() return contact;
public void setContact(Contact contact) this.contact = contact;
public String getNotes() return notes;
public void setNotes(String notes) this.notes = notes;
public String getProject() return project;
public void setProject(String project) this.project = project;
public String getMember() return member;
public void setMember(String member) this.member = member;
public Integer getStaffMember() return staffMember;
public void setStaffMember(Integer staffMember) this.staffMember = staffMember;
public Photo getPhoto() return photo;
public void setPhoto(Photo photo) this.photo = photo;
public BankAccount getUserBankAccount() return userBankAccount;
public void setUserBankAccount(BankAccount userBankAccount) this.userBankAccount = userBankAccount
public PayeeBankAccount getPayeeBankAccountList() return payeeBankAccountList;
public void setPayeeBankAccountList(PayeeBankAccount payeeBankAccountList)this.payeeBankAccountList= payeeBankAccountList;
//photo model
public class Photo
@Id
private String id;
private String title;
private Binary image;
//Photo constructor
public Photo(String id, String title, Binary image)
this.id = id;
this.title = title;
this.image = image;
public Photo(String title)
super();
this.title = title;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getTitle()
return title;
public void setTitle(String title)
this.title = title;
public Binary getImage()
return image;
public void setImage(Binary image)
this.image = image;
@Override
public String toString()
return "Photo \[id=" + id + ", title=" + title + ", image=" + image + "\]";
//photo service
@Service
public class PhotoService
@Autowired
private PhotoRepository photoRepo;
public Photo getPhoto(String id)
return photoRepo.findById(id).get();
public String addPhoto(String title, MultipartFile file) throws IOException
Photo photo = new Photo(title);
photo.setImage(new Binary(BsonBinarySubType.BINARY, file.getBytes()));
photo = photoRepo.insert(photo);
return photo.getId();
照片和收款人 PostMapping 应该是一体的,这部分不知道去哪里 //添加收款人 @PostMapping('/addPayee') 公共无效插入(@RequestBody 收款人收款人) this.payeeRepository.save(payee);
//add photo
@PostMapping('/photos/add')
public String addPhoto(@RequestBody Payee payee , @RequestParam("title") String title, @RequestParam("image") MultipartFile image, Model model)
throws IOException
String id = photoService.addPhoto(title,image);
return id;
][1]][1]
[1]: https://i.stack.imgur.com/lF6KZ.png
【问题讨论】:
看起来像这个:***.com/questions/63026184/… 看看这个***.com/questions/61343477/…。当您发送文件时,您使用@RequestPart
来获取它,如图所示。 @RequestPart
和 @Request body
不能同时使用,@RequestPart
也不能用于 body。
嗨,我一直收到八位字节流错误
【参考方案1】:
在你的模型中发现它有二进制的图像,在你的控制器中有一些类似的东西
@RequestMapping(value = "/update", method = RequestMethod.POST, consumes = "multipart/form-data") 公共 ResponseEntity 更新(@RequestPart("payee") @Valid Payee payee, @RequestPart("file") @Valid MultipartFile image)抛出 IOException // 更新收款人的例程,包括图片 如果(图像!= null) payee.setImage(new Binary(BsonBinarySubType.BINARY, image.getBytes())); 收款人结果 = payeeRepository.save(payee); 返回 ResponseEntity.ok().body(result);
【讨论】:
以上是关于想使用spring boot将图像导入mongodb的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot 将 CSV 文件导入 MYSQL
使用 Maven 部署 Spring-Boot 项目并进一步将其导入其他项目