Java 关于图片上传如何判断图片是否重复
最近在写一个JAVA项目,其中一个功能类似社区交流的,里面可以评论和发表动态,我设计表的时候将评论和评论的图片分开(因为用户可能评论好几张照片,当然设计成一张表然后按分隔符去取也是可以的),然后我评论表有个id绑定图片表,我就在想:如果A用户和B用户上传的是同一张图片,那么我的minIO不是存了两个图片,如果是表情包那么不是存的重复的图片更多了吗。那么该怎么让他不判断呢?我的思路是:上传时不判断,过后再判断,然后数据库存的链接换成同一个。写个定时任务,去minIO拿图片然后判断,一样的就把minIO的图片删掉然后去数据库修改字段。但是这样做是不是太浪费性能了?有必要吗?而且我感觉没办法实现。。。 上传的时候判断一下MD5码,数据库里有就换成已有链接 扫描图片特征码然后存入数据库地址,当上传扫描如果重复那么就直接指向该图片minio的存储地址。 2楼那样就阔以,上传的时候判断下文件的md5,一样的话,就不用上传了,然后替换链接,没有的话,就上传,存个md5 可以但是没必要,现在存储成本那么低 好好学习多挣钱 发表于 2023-7-14 10:57可以但是没必要,现在存储成本那么低
为啥没必要 实现了这个功能 不就是实现了秒传吗 其实感觉没必要,不过你可以数据库存储每个文件的md5或者sha值,上传的文件计算下sha或者md5,直接去数据库检索存在不 十三叔 发表于 2023-7-14 11:01
为啥没必要 实现了这个功能 不就是实现了秒传吗
他是保存图片,不是保存大文件。用户上传的图片重复率不高的(当然想故意攻击你的,md5去重复也防不住){:301_1009:} 本帖最后由 origamiii 于 2023-7-14 11:51 编辑
看代码吧,应该可行。如果md5重复,可以换其他算法,当然也可以叫用户去买彩票。{:1_918:}
使用的类库是apache的;没看有没有关流,没有的话,记得自己把流关了。
import org.apache.commons.codec.digest.DigestUtils;
感觉没这个必要,用MD5不可行。
比如用户截图上传,不同的手机截图(一样的图片)上传的MD5是不同的。
除非评论中的图片是服务端提供,用户只能选择图片。如果是这样更没必要,可以换一种业务逻辑。
页:
[1]
2