java文件上传判断是否重复,不需要文件请求上去就能判断
进来看这篇文章的朋友,应该都有做过文件上传的业务,也弄了文件重复的问题。通常的做法就是:
使用 MD5 消息摘要算出 文件摘要,作为文件名,判断重复的时候,去数据库比较一下。
但有没有发现一个问题就是,文件拿到服务器才能判断,判断重复了不要了呢,是不是白拿了,是不是有点浪费宽带和服务器内存啊,这是能优化的地方啊。
这个是最近在做文件处理的时候想到了这样的问题的。
还有一个问题,post表单文件,没读它是否也来到服务器了呢,或者我们读它才会流上来呢?
看一下这个类的api介绍:大概意思是请求上来的时候这个类就把文件缓存在内存或者磁盘,大文件会缓存到磁盘中,等待处理,请求结束才清除,很明显发起post请求 文件就来到服务器了
api
百度了一圈,好像都没什么相关的问题,都是教你怎么上传文件,然后在服务器上判断重复的问题的。是不是我想得太多了,这不是问题吗,不管了,我说我的想法就得了。
既然不让文件上到服务器,那就在前端了,在文件post之前,是不是可以先拿文件摘要上去,判断要不要post这个文件上去呢。
当然不应该只在前端判断,因为你的客户不是每个都是正常用户,你懂得,所以原来服务器的判断还是要的,前端 卡一部分文件请求还是有必要的,文件比通常post字符串信息 要大得太多。
怎么在前端取到文件摘要的问题:
js的MD5算法在网上有,代码我就不贴出来了,200行有点长,也有专门js插件,没必要 就一个方法而已。
js的MD5算法