如何在MVC5中更新或删除已上传且直接存储在数据库中的图片
因为你当前采用直接将图片二进制存入数据库的存储逻辑,已上传图片的删除、编辑操作可按以下方案实现,全程复用你现有存库的核心逻辑:
删除操作
- 前端触发删除动作时,传入目标图片的唯一标识(比如你存图时生成的主键ID、关联业务的唯一编号均可)
- 后端接参后执行对应数据库操作即可:如果需要物理删除直接执行
DELETE FROM 你的图片表名 WHERE 图片唯一ID = ?;如果需要留存操作记录,只需要更新对应记录的是否删除标记位为已删除状态即可,无需额外操作文件系统资源 - 操作执行完成后返回成功状态给前端即可
编辑操作
编辑分两种场景,都可以复用现有存储逻辑:
- 仅修改图片元数据:比如修改文件名、备注、关联业务分类这类非图片本身的信息,直接根据图片唯一ID更新对应字段即可,执行语句参考:
UPDATE 你的图片表名 SET 文件名 = ?, 分类ID = ?, 备注 = ? WHERE 图片唯一ID = ? - 替换图片本体:和你现有的新图上传逻辑完全一致,只需要把新上传的图片转成二进制流,覆盖对应记录中的图片二进制存储字段即可,执行语句参考:
UPDATE 你的图片表名 SET 图片二进制内容 = ?, 文件大小 = ?, 格式后缀 = ?, 更新时间 = ? WHERE 图片唯一ID = ? - 如果你有留存历史版本的需求,也可以直接新增一条新的图片存储记录,将旧记录标记为历史版本即可,不需要覆盖原有内容
注意:如果你的图片存储表和其他业务表存在外键关联,编辑/删除前建议先做关联校验和权限校验,避免误操作导致关联业务数据异常;如果单张图片体积较大,更新操作建议加事务包裹,避免更新失败产生脏数据。
内容的提问来源于stack exchange,提问作者Mohamed Trader
相关产品推荐
相关产品推荐

