我想将管理员添加的图像(添加类别)上传到项目目录中的文件夹中,但我尝试在控制器的帮助下执行此操作,但它会抛出未处理的异常类型 IOException
@PostMapping("/saveCategory")
public String saveCategory(@ModelAttribute Category category, @RequestParam("file") MultipartFile file,
HttpSession session) {
System.out.println(file.getOriginalFilename());
String imageName = file != null ? file.getOriginalFilename() : "default.jpg";
category.setImageName(imageName);
Boolean existCategory = categoryService.existCategory(category.getName());
if (existCategory) {
session.setAttribute("errorMsg", "Category name already exist");
} else {
Category saveCategory = categoryService.saveCategory(category);
if (!ObjectUtils.isEmpty(saveCategory)) {
session.setAttribute("errorMsg", "Not saved ! internally server error");
} else {
// first of all get the path onto which u want to upload the file.
File saveFile = new ClassPathResource("static/img").getFile();
Path path = Paths.get(saveFile.getAbsolutePath() + File.separator + "category_img" + File.separator+ file.getOriginalFilename());
// System.out.println(path);
Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
session.setAttribute("succMsg", "Saved successfully");
}
}
return "redirect:/admin/Category";
}
您无法写入 ClasspPathResource。
更换
File saveFile = new ClassPathResource("static/img").getFile();
Path path = Paths.get(saveFile.getAbsolutePath() + File.separator + "category_img" + File.separator+ file.getOriginalFilename());
与
Path path = Paths.get("fullpath/to/folder" + File.separator + "category_img" + File.separator+ file.getOriginalFilename());
您可能应该将
"fullpath/to/folder"
作为配置值,并且它必须可以从运行 java 的服务器访问。