@RequestMapping(value = "/files.action") public String files( @RequestParam(value ="image", required = false) MultipartFile file, @RequestParam(value ="image1", required = false) MultipartFile file1, HttpServletRequest request, ModelMap model) { String path = request.getSession().getServletContext().getRealPath("/") + "upfiles/"; String fileName = file.getOriginalFilename(); int i = fileName.lastIndexOf("."); String name = String.valueOf(VeDate.getStringDatex()); String type = fileName.substring(i + 1); fileName = name + "." + type; File targetFile = new File(path, fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } // 保存 try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } String fileName1 = file1.getOriginalFilename(); int j = fileName1.lastIndexOf("."); String name1 = String.valueOf(VeDate.getStringDatex()); String type1 = fileName1.substring(j + 1); fileName1 = name1 + "." + type1; File targetFile1 = new File(path, fileName1); if (targetFile1.exists()) { targetFile1.delete(); } targetFile1.mkdirs(); try { file1.transferTo(targetFile1); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("image1FileName", fileName1); model.addAttribute("imageFileName", fileName); return "page/savefile"; } }保存图片时,第二张图片会覆盖第一张图,该如何修改代码
时间: 2023-06-15 22:05:18 浏览: 126
在代码中,第二个文件的保存路径和文件名使用了第一个文件的信息,导致第二个文件覆盖了第一个文件。为了解决这个问题,你需要为每个文件设置不同的保存路径和文件名。
可以考虑在方法中分别处理每个文件,使用不同的参数名和变量名,以及不同的保存路径和文件名。例如,可以将第二个文件的参数名改为 "image1",将第二个文件的保存路径和文件名设置为不同的变量,如下所示:
```
@RequestMapping(value = "/files.action")
public String files(
@RequestParam(value ="image", required = false) MultipartFile file,
@RequestParam(value ="image1", required = false) MultipartFile file1,
HttpServletRequest request, ModelMap model) {
String path = request.getSession().getServletContext().getRealPath("/") + "upfiles/";
// 处理第一个文件
String fileName = file.getOriginalFilename();
int i = fileName.lastIndexOf(".");
String name = String.valueOf(VeDate.getStringDatex());
String type = fileName.substring(i + 1);
fileName = name + "." + type;
File targetFile = new File(path, fileName);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
try {
file.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
}
model.addAttribute("imageFileName", fileName);
// 处理第二个文件
String fileName1 = file1.getOriginalFilename();
int j = fileName1.lastIndexOf(".");
String name1 = String.valueOf(VeDate.getStringDatex());
String type1 = fileName1.substring(j + 1);
fileName1 = name1 + "." + type1;
File targetFile1 = new File(path + "/image1/", fileName1); // 设置不同的保存路径
if (targetFile1.exists()) {
targetFile1.delete();
}
targetFile1.mkdirs();
try {
file1.transferTo(targetFile1);
} catch (Exception e) {
e.printStackTrace();
}
model.addAttribute("image1FileName", fileName1);
return "page/savefile";
}
```
在上面的代码中,我们将第二个文件的保存路径设置为 "path + "/image1/"",即在 "upfiles/" 目录下创建一个名为 "image1" 的子目录,并将第二个文件保存在该子目录中。这样就可以避免第二个文件覆盖第一个文件的问题。
阅读全文