Maison > Questions et réponses > le corps du texte
Ainsi, lorsque je mettais à jour les données de l'utilisateur, j'ai eu une erreur indiquant qu'il souhaitait télécharger à nouveau l'image même si j'avais déjà téléchargé l'image de l'utilisateur dans la base de données. Quelqu'un peut-il me dire comment enregistrer l'utilisateur sans télécharger l'image, mais conserver l'image téléchargée dans ma base de données ?
L'erreur est java.IOException : Impossible d'enregistrer le fichier image :
Causé par : java.nio.file.DirectoryNotEmptyException : profile-image/4
C'est mon contrôleur
@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";
P粉1565327062024-04-01 09:38:55
Il y a un bug dans votre FileUploadUtil
classe. Ce répertoire ne doit être créé que si le répertoire n'existe pas existe :
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); } }