在之前测试用单个文件上传时,确定了两个参数、一个是文件本身、一个是目标地址的文件夹名称。
上传的文件要和固定的文件夹名称对应。
public String upload(@RequestParam("file") MultipartFile file, @RequestParam("name") String targetMicroServiceName)
现在想要优化代码到上传多个文件,此时出现了一个问题:就是每一次上传文件的数量不一,有时会上传一个文件,有时上传多个文件,有时上传全部文件。怎样在传递的参数中体现这种形式?
开始的时候我想传递多个文件,就写成file1,file2,name1,name2这种形式,但如果文件数量不固定的话,这种形式就不能要了,请问大神怎样修改
public String handleFileUpload(HttpServletRequest request,@RequestParam("names") String[] name) {
MultipartHttpServletRequest params = ((MultipartHttpServletRequest) request);
List<MultipartFile> files = params.getFiles("file");
System.out.println("files" + files);
//接收前端传过来的字段
MultipartFile file = null;
//先设置一个数组来装file路径
List jars = new ArrayList();
//设置文件路径
final String firstPathName = addressConfig.getFirstPath();
for (int i = 0; i < files.size(); ++i) {
file = files.get(i);
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// 获取文件名
String origFileName = file.getOriginalFilename();
//文件路径
Path path = Paths.get(firstPathName + origFileName);
System.out.println("lj: " + path);
jars.add(path);
//如果没有files文件夹,则创建
if (!Files.isWritable(path)) {
Files.createDirectories(Paths.get(firstPathName));
}
//文件写入指定路径
Files.write(path, bytes);
}
} catch (Exception e) {
return "文件上传失败 " + i + " => " + e.getMessage();
}
} else {
return "文件上传失败 " + i + " because the file was empty.";
}
System.out.println("mz:" + name[i]);
}
return "文件上传成功";
}
```**_用数组_**
传数组回去啊!!通过数组分解得到文件数量
public String upload(HttpServletRequest request, HttpServletResponse response) throws Exception {
MultipartRequest req = (MultipartRequest) request;
Map<String, MultipartFile> file_map = req.getFileMap();
for (String key : file_map.keySet()) {
MultipartFile multipartFile = file_map.get(key);
}
}
@RequestParam("file") MultipartFile[] file
@RequestParam("files") MultipartFile[] file
@RequestParam(value = "file",required = false) MultipartFile[] files
1:参数1 MultipartFile[] files 参数2:数组(一个字段放文件夹名称,一个字段放files里面特有的值,) 循环的时候比较特有的值就知道哪个对应哪个
2.看你这种描述,感觉是上传文件夹,并不是上传多个文件,,我见过的上传多个文件也是在同一文件夹下的,如果是上传文件夹的话在回复我吧,,,