如题,怎样判断上传的文件是否已经有了,如果有,就提示相关信息,如果没有
就正常上传?
现在最主要的问题是,我怎样拿到已经存在的所有文件的文件名?我又怎样拿到
上传的文件名?如果拿到了这两个东西就好办了?大神可以帮我看看。。。
方案1:文件上传一次,mysql记录好,这样的话,你mysql一个命令就可以查询所有文件的文件名。
方案2:一个文件,同一时间2次重复提交。前端设置一个uid,控制重复提交。
方案3:2个文件md5 一下,看一下是否相同。 DigestUtils.md5Hex(IOUtils.toByteArray(fis))
其实这个问题真的非常简单,我来给你说一下以下几种情况怎么做:
1、如果文件是一个一个上传的,那么第一个文件上传到后端,后端可以通过file.getName()方法获取到文件名,然后在后端保存之后,
将文件名作为回调值返回到前端,前端可以用一个集合对文件名进行保存,然后在下一次选择文件的时候,可以通过jq方法
function change(){
var obj = document.getElementById("upload");
var fileName = obj.files[0].name;
//这里就可以用这个Name和刚刚保存的文件名进行对比,相同就提示文件上传重复
}
2、如果文件是一起上传的,那就需要在后端进行判断了。
List<String> list = new ArrayList();
list.add(file[i].getName());
//然后对List进行循环,判断有没有相同的文件名,如果有相同的文件,那就返回错误信息到前端(不保存文件),前端进行一个提示信息就行了
文件名相同不一定文件就相同,文件名不同不一定文件就不同。你应该在服务器内计算md5,并且存储md5,根据md5来判断是否重复
https://blog.csdn.net/xuxile/article/details/77963894
直接fso获取啊
Set fso = CreateObject("Scripting.FileSystemObject")
Set aaa = fso.FileExists(Server.MapPath(".") "文件位置")
if aaa = true then
'存在时的代码
else
'不存在时的代码
end if
如果文件都是存在于本地而且没有重命名、单纯以文件名判断是否重复的话,前端上传文件的时候先把要把上传文件的文件名传到后台比对存储文件夹位置下的所有文件,以下获取文件夹中所有文件代码:
public List<File> getFileList(String filePath){
List<File> retFiles = new ArrayList<>();
File file = new File(filePath);
if(file.exists()){
File[] files = file.listFiles();
if(null!=files && files.length>0){
for (File file2 : files) {
if(file2.isDirectory()){
getFileList(file2.getAbsolutePath());
}else{
retFiles.add(file2);
}
}
}
}
return retFiles;
}
遍历获取所有文件的文件名进行比对,有无重复文件返回给前端,没有的话继续上传,有的话中止并给出提示信息