es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar imágenes en la base de datos.

Estoy haciendo una aplicación inmobiliaria en Spring Boot – Thymeleaf y realmente necesito preguntarte cómo almacenar imágenes. Estaba pensando en hacer una tabla solo para imágenes y anotarla como manyToOne, e insertarla en la entidad Property porque una propiedad puede tener 10, 15, 20 imágenes y eso es lo que sé cómo hacer.

Pero no estoy seguro de cómo manejar el resto del código. ¿Cómo hacer la carga de archivos en el método /add? ¿Y también cómo añadir y mostrarlos en Thymeleaf?

Este es mi método /properties/add sin la opción de insertar imágenes:

    @RequestMapping("/add")
    public String add(Model theModel) {
        Property theProperty = new Property();

        User theUser = new User();
        theProperty.setUser(theUser);
        List<user> userList = userService.findAll();

        Address theAddress = new Address();
        theProperty.setAddress(theAddress);
        List<address> addressList = addressService.findAll();

        theModel.addAttribute("property", theProperty);
        theModel.addAttribute("user", userList);
        theModel.addAttribute("address", addressList);

        return "properties/property-form";
}

No espero que lo escribas, pero quizás alguien conozca el proyecto más similar.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para manejar la carga de archivos en el método /add, se puede utilizar la anotación @RequestParam para obtener el archivo cargado y luego guardarlo en la base de datos.

    Aquí tienes un ejemplo de código para el método /add:

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String add(@ModelAttribute("property") Property property,
                      @RequestParam("file") MultipartFile file,
                      Model model) {
    
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                property.setImage(bytes);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        propertyService.save(property);
        return "redirect:/properties";
    }
    

    En este fragmento de código, se utiliza la anotación @RequestParam("file") para obtener el archivo cargado. Comprobamos si el archivo no está vacío y luego convertimos el archivo en un array de bytes y lo almacenamos en el objeto Property.

    Para mostrar las imágenes en Thymeleaf, se puede utilizar la etiqueta img y establecer el atributo src de la etiqueta con la ruta URL de la imagen. Aquí tienes un ejemplo de código para mostrar las imágenes cargadas en Thymeleaf:

    <img th:src="@{'/images/' + ${property.id}}">
    

    En este fragmento de código, se establece el atributo src de la etiqueta img con la ruta URL de la imagen, que consiste en la carpeta /images/ seguida del ID del objeto Property.

    Ten en cuenta que también deberás configurar tu aplicación para servir las imágenes cargadas desde la carpeta /images/.

Comments are closed.