近期做了一个项目,用到了图片上传的模块,但是写完接口后测试,上传的总是变成了文件夹,于是刨根问底的找原因,最终发现代码里面少了一个方法我的代码是这样的
if (!dir.exists()) {
dir.mkdirs();
}
于是,翻山越岭找原因,终于找到了问题的根源dir.mkdirs()代表创建路径为dir的文件夹,而正确的代码应该是
if (!dir.getParentFile().exists()) {
dir.getParentFile().mkdirs();
}
这样就会将文件上传,而不会变成文件夹。
接下来是全部的上传代码
public void fileURL(MultipartFile[] file, HttpServletRequest request) {
List list = new ArrayList<String>();
try {
//获取文件存储路径
String path = "上传路径";
for(int i = 0;i<file.length;i++){
String fileName = file[i].getOriginalFilename();//获取到上传文件的名字
String suffix = fileName.substring(fileName.lastIndexOf('.'));//获取文件后缀
String newfileName = suffix;//随机生成文件名
File dir = new File(path, newfileName);//在目录中创建文件目录
if (!dir.getParentFile().exists()) {
dir.getParentFile().mkdirs();//创建文件
}
//MultipartFile自带的解析方法
file[i].transferTo(dir);//转换文件
list.add(newfileName);
}
} catch (Exception e) {
e.getMessage();
}
}