Как сохранить образ в mysql с помощью весенней загрузки? и как я могу также получить его? Я получаю 400 ошибок при регистрации - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь преобразовать путь к загруженному файлу в angular в массив байтов [] после получения его в виде строки в контроллере весенней загрузки с помощью @RequestParam. Я добавляю байтовый массив к объекту, используя простой установщик в классе модели. при регистрации я получаю 400 HttpError Response

Класс модели


@Entity
@Table(name="registration")
public class Registration {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private int id;
    private String name;
    private String username;
    private String password;

    @Lob
    private byte[] image;

 // respective getters,setters and constructor


Мой регистрационный репозиторий


@Repository
public interface RegistrationRepository extends JpaRepository<Registration, Integer> {

    public List<Registration> findByUsernameAndPassword(String username,String password);

}

Служба регистрации присутствует

Контроллер регистрации: -


@RestController
@RequestMapping("/register")
@ComponentScan
public class RegistrationController {

    @Autowired
    private RegistrationService res;


    @PostMapping("/registeruser")
    public ResponseEntity<Registration> registeruser(@RequestBody  Registration reg, @RequestParam String filename) throws IOException
    {
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();

        String userHashedPassword = bCryptPasswordEncoder.encode(reg.getPassword());

        File file = new File(filename);
        byte[] picInBytes = new byte[(int) file.length()];
        FileInputStream fileInputStream = new FileInputStream(file);
        fileInputStream.read(picInBytes);
        fileInputStream.close();

        reg.setImage(picInBytes);


        Registration resm= new Registration(reg.getName(),reg.getUsername(),userHashedPassword, reg.getImage());

        Registration userResp = res.registeruser(resm);
        return new ResponseEntity<Registration>(userResp,HttpStatus.OK);
}

1 Ответ

0 голосов
/ 06 января 2020

Вы принимаете имя файла, вместо фактического файла. Удалите «filename» из метода вашего контроллера и добавьте параметр Multipart file. Ваш метод контроллера делает это: создает файл с именем, заданным аргументом имени файла, который является пустым, затем получает его размер, который снова становится пустым, а затем читает 0 байтов через поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...