Volver a la página principal
martes 19 noviembre 2024
32

Cómo subir archivos en Spring Boot

Aprende cómo implementar una funcionalidad para subir archivos en una aplicación Spring Boot. Este proceso incluye la configuración de endpoints, el manejo de archivos en el servidor y las mejores prácticas para garantizar la seguridad y eficiencia.

Configuración de subida de archivos en Spring Boot

Spring Boot facilita la gestión de archivos gracias a su integración con Spring MVC. Para habilitar esta funcionalidad, es necesario configurar un controlador que maneje las peticiones POST con contenido de archivo.

Pasos básicos para implementar la subida de archivos:

1. Dependencias del proyecto:

Asegúrate de incluir las dependencias necesarias en tu archivo pom.xml o build.gradle. Spring Web es imprescindible.

<!-- Ejemplo para Maven -->
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>

2. Configuración en el archivo application.properties:

Define los límites de tamaño para los archivos que pueden ser subidos al servidor.

spring.servlet.multipart.max-file-size=2MB
   spring.servlet.multipart.max-request-size=2MB

3. Controlador para manejar la subida:

Crea un endpoint que reciba los archivos. Usa la anotación @RequestParam para procesarlos.

@RestController
   @RequestMapping("/api/files")
   public class FileController {
       
       @PostMapping("/upload")
       public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
           if (file.isEmpty()) {
               return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Archivo vacío");
           }

           try {
               // Guardar el archivo en el servidor
               Path path = Paths.get("uploads/" + file.getOriginalFilename());
               Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
               return ResponseEntity.ok("Archivo subido exitosamente");
           } catch (IOException e) {
               return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error al subir el archivo");
           }
       }
   }

4. Crear directorios si es necesario:

Asegúrate de que el directorio donde se guardan los archivos exista. Puedes crear este directorio durante la inicialización de la aplicación.

@PostConstruct
   public void init() {
       Path uploadDir = Paths.get("uploads");
       try {
           Files.createDirectories(uploadDir);
       } catch (IOException e) {
           throw new RuntimeException("Error al crear directorio de uploads", e);
       }
   }

Ejemplos de uso

  • Petición HTTP usando cURL:
curl -F "file=@ruta_del_archivo.txt" http://localhost:8080/api/files/upload
  • Frontend con HTML:
<form action="/api/files/upload" method="post" enctype="multipart/form-data">
       <input type="file" name="file" />
       <button type="submit">Subir archivo</button>
   </form>

Referencia oficial

Consulta la documentación oficial de Spring Boot para más detalles sobre la gestión de archivos y buenas prácticas.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer