Поэтому, когда я обновляю данные для пользователя, я столкнулся с ошибкой, что даже если у меня уже есть изображение, загруженное для пользователя в моей БД, оно хочет снова загрузить изображение. Может ли кто-нибудь сказать мне, как сохранить пользователя без загрузки изображения, но загруженное изображение остается в моей БД?
Ошибка java.IOException: не удалось сохранить файл изображения:
вызвано: java.nio.file.DirectoryNotEmptyException: изображение профиля/4
вот мой контроллер
@PostMapping("/profile/save")
public String saveProfile(Profile profile, Model model, @RequestParam("image") MultipartFile multipartFile,@RequestParam(value = "userId", required=false) Long userId) throws IOException {
profile.setUser(userRepo.findById(userId).get());
String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename()) ;
String uploadDir - "profile-image/"+ profile.getId();
FileUploadUtil.saveFile(uploadDir, fileName, multipartFile);
profile.setProfileImg(fileName);
profileService.saveProfile(profile);
return "redirect:/user/profile";
О, извините, это класс Java, я включил его сейчас.
В вашем FileUploadUtil
классе ошибка. Вы должны создать каталог только в том случае, если он не существует:
public static void saveFile(String uploadir, String fileName, MultipartFile multipartFile) throws IOException {
Path uploadPath = Paths.get(uploadDir);
if (!Files.exists(uploadPath)) {
Files.createDirectories(uploadPath);
}
try (InputStream inputStream = multipartFile.getInputStream()) {
Path filePath = uploadPath. resolve(fileName);
System.out.printIn(filePath.toFile()-getAbsolutePath()+"File Path*******");
Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ioe) {
throw new IOException("Could not save image file: " + fileName, ioe);
}
}
Спасибо! Можете ли вы сказать мне пример кода, так как я следовал только учебнику здесь: codejava.net/frameworks/spring-boot/…
Вы только посмотрите на эту строчку if (!Files.exists(uploadPath))
. Перед Files.exists
стоит восклицательный знак
Да, как я могу сохранить имя файла в скрытом поле формы?
Я не совсем понимаю, что вы имеете в виду. Динамически заполнять скрытый ввод после того, как событие change
запускается при вводе файла? Возможно, вам следует открыть еще один вопрос, если вы не можете найти решение
Что такое
FileUploadUtil
?