[RESOLVIDO] Como fazer o upload de imagem usando Spring Boot?

Estou aprendendo a usar o Spring Boot e preciso criar um campo no formulário que carregue a imagem a ser utilizada. Como faço para mapear o diretório e salvar em uma determinada pasta do projeto?

Vi algumas respostas, no stackoverflow e no aqui no GUJ, mas ainda estou com dúvidas de como proceder dentro das classes de domínio. Exemplo:

Observação: estou utilizando MySQL.

package com.ptestes.models;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class HotSite implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	
	private String pageTitle;
	
	@?????
	private <?????> img;
	
    /*Getters and Setters*/
}

Desde já, muito obrigada! :blush:

:thinking: :blush: :grin:

Veja se esse exemplo ajuda.

http://www.mkyong.com/spring-boot/spring-boot-file-upload-example/

Nao precisa mapear.

1 curtida

Muito obrigada por responder! :blush:

Achei o exemplo bem interessante! Baixei código e funcionou! :grinning:

Eu achava que precisava que ficasse junto da classe de domínio correspondente.

Sei que pode ser uma pergunta muito boba, mas, vamos lá… :relaxed: :grin:

Minha dúvida agora é: como eu crio o vinculo dessa imagem a uma entidade especifica? :thinking:

Exemplo: Vamos supor que eu criasse uma classe chamado UserProfile e, mapeando ela, uma tabela no Banco de Dados. Esse domínio vai gerenciar as informações pessoais do usuário, como nome e endereço.

Caso eu quisesse guardar uma foto para usar no perfil do usuário ou, então, a cópia de um currículo, eu teria que criar uma pasta exclusiva para cada usuário e ali salvar os arquivos e fotos dele ou dela, certo? Caso sim, como eu vincularia esse diretório ao meu domínio UserProfile?

Pelo Id, ou algo que seja único.

Dependendo da aplicação é melhor guardar no banco, em tablespace próprio. Em aplicações transacionais gerenciar qualquer tipo de dado “por fora” é perigoso para integridade referencial com demais dados. Por outro lado é mais performático, mas em aplicações internas isso pode ser menos importante do que a integridade.

1 curtida

Entendi. Para a aplicação que preciso fazer, será necessário usar o banco. É uma aplicação externa e será hospedada em uma plataforma tipo o Heroku, por exemplo. Sim, penso em manter a integridade dos dados.

OK! Muito obrigada! Sua resposta me deu um norte! :smiley: