Problem with MultipartFile from the Spring java framework

0

I am working to upload the images as avatars of the users, but it throws an error to me when trying to write the image and to keep it, I am working with MultiparFile of Spring, but I do not have much knowledge of it.

  

This is my RequestMapping to upload the image:

@RequestMapping(value = "/teachers/images", method = RequestMethod.POST, headers = ("content-type=multipart/form-data"))
public ResponseEntity<byte[]> uploadTeacherImage(@RequestParam("idTeacher") Long idTeacher, @RequestParam("file")MultipartFile multipartFile, UriComponentsBuilder uriComponentsBuilder) {
    if (idTeacher == null) {
        return new ResponseEntity(new CustomErrorType("Please set id_teacher"), HttpStatus.NO_CONTENT);
    }

    if (multipartFile.isEmpty()) {
        return new ResponseEntity(new CustomErrorType("Please select a file to upload"), HttpStatus.NO_CONTENT);
    }

    Teacher teacher = _teacherService.findById(idTeacher);
    if (teacher == null) {
        return new ResponseEntity(new CustomErrorType("Teacher with id_teacher: " + idTeacher + " not found"), HttpStatus.NOT_FOUND);
    }

    if (!teacher.getAvatar().isEmpty() || teacher.getAvatar() != null) {
        String fileName = teacher.getAvatar();
        Path path = Paths.get(fileName);
        File f = path.toFile();
        if (f.exists()) {
            f.delete();
        }
    }

    try {
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateName = dateFormat.format(date);

        String fileName = String.valueOf(idTeacher)
                + "-pictureTaecher-" + dateName + "."
                + multipartFile.getContentType().split("/")[1];
        teacher.setAvatar(TEACHER_UPLOADED_FOLDER + fileName);

        byte[] image = multipartFile.getBytes();
        Path path = Paths.get(TEACHER_UPLOADED_FOLDER + fileName);
        Files.write(path, image);

        _teacherService.update(teacher);
        return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image);
    } catch (Exception e) {
        e.printStackTrace();
        return new ResponseEntity(
                new CustomErrorType("Error during upload: " + multipartFile.getOriginalFilename()),
                HttpStatus.CONFLICT
        );
    }
}
    
asked by Asdrubal Hernandez 27.09.2018 в 02:10
source

0 answers