Z033 发表于 2023-7-13 23:00

Java 关于图片上传如何判断图片是否重复

最近在写一个JAVA项目,其中一个功能类似社区交流的,里面可以评论和发表动态,我设计表的时候将评论和评论的图片分开(因为用户可能评论好几张照片,当然设计成一张表然后按分隔符去取也是可以的),然后我评论表有个id绑定图片表,我就在想:如果A用户和B用户上传的是同一张图片,那么我的minIO不是存了两个图片,如果是表情包那么不是存的重复的图片更多了吗。那么该怎么让他不判断呢?我的思路是:上传时不判断,过后再判断,然后数据库存的链接换成同一个。写个定时任务,去minIO拿图片然后判断,一样的就把minIO的图片删掉然后去数据库修改字段。但是这样做是不是太浪费性能了?有必要吗?而且我感觉没办法实现。。。

深巷丶 发表于 2023-7-14 10:33

上传的时候判断一下MD5码,数据库里有就换成已有链接

你猜啊 发表于 2023-7-14 10:39

扫描图片特征码然后存入数据库地址,当上传扫描如果重复那么就直接指向该图片minio的存储地址。

Songzhiqiang 发表于 2023-7-14 10:44

2楼那样就阔以,上传的时候判断下文件的md5,一样的话,就不用上传了,然后替换链接,没有的话,就上传,存个md5

好好学习多挣钱 发表于 2023-7-14 10:57

可以但是没必要,现在存储成本那么低

十三叔 发表于 2023-7-14 11:01

好好学习多挣钱 发表于 2023-7-14 10:57
可以但是没必要,现在存储成本那么低

为啥没必要    实现了这个功能   不就是实现了秒传吗

rainerosion 发表于 2023-7-14 11:03

其实感觉没必要,不过你可以数据库存储每个文件的md5或者sha值,上传的文件计算下sha或者md5,直接去数据库检索存在不

好好学习多挣钱 发表于 2023-7-14 11:08

十三叔 发表于 2023-7-14 11:01
为啥没必要    实现了这个功能   不就是实现了秒传吗

他是保存图片,不是保存大文件。用户上传的图片重复率不高的(当然想故意攻击你的,md5去重复也防不住){:301_1009:}

origamiii 发表于 2023-7-14 11:18

本帖最后由 origamiii 于 2023-7-14 11:51 编辑

看代码吧,应该可行。如果md5重复,可以换其他算法,当然也可以叫用户去买彩票。{:1_918:}
使用的类库是apache的;没看有没有关流,没有的话,记得自己把流关了。
import org.apache.commons.codec.digest.DigestUtils;

dreamstony 发表于 2023-7-14 11:45

感觉没这个必要,用MD5不可行。
比如用户截图上传,不同的手机截图(一样的图片)上传的MD5是不同的。
除非评论中的图片是服务端提供,用户只能选择图片。如果是这样更没必要,可以换一种业务逻辑。
页: [1] 2
查看完整版本: Java 关于图片上传如何判断图片是否重复