JAVA 表单带图片提交 sql事物异常回滚后如何删除已上传的图片

表单带图片提交上来,先保存图片,图片保存完之后把路径存到数据库得到id,再把id赋给表单对象实体;

如果在图片保存完之后,后面保存表单sql出现异常需要回滚,sql可以回滚,我想把之前上传的文件再给删除需要怎么样实现呢?

@Transactional(rollbackFor = Exception.class)
public int insert(Form form, MultipartFile file) throws IOException {
    if (!file.isEmpty()) {
    // 这里的操作会先把文件保存到磁盘,然后将路径信息保存到数据库,再返回路径信息
    form.setImage(sysFileService.upLoad(file).getId());
    }
    return mapper.insert(form);
}

发生事物异常时可以手动指定异常处理类,我可以重写一个异常处理类,传文件上传后的一些路径信息过去再把这个文件删除吗?

阅读 2.6k
2 个回答

可以考虑不用用form提交图片,用上传组件先上传图片到专门的附件表,返回id,表单带着附件id提交后台,回滚时候,根据附件id找到图片路径删除图片,删除附件表记录

直接try catch insert方法,有异常就直接删除,并抛出异常

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题