Esta página se tradujo automáticamente con la API de traducción de Google Cloud.
Algunas páginas se pueden leer mejor en su totalidad.
Spring Boot es un marco basado en Java que le permite crear aplicaciones Spring independientes de nivel de producción. En esta publicación, le mostraremos cómo implementar un sistema de administración de archivos en una aplicación Spring Boot.
Primero, necesitaremos crear un nuevo proyecto Spring Boot. Podemos hacer esto usando Spring Initializr.
Complete los detalles del proyecto:
Haga clic en "Generar proyecto" para descargar el proyecto.
Una vez generado el proyecto, deberíamos tener la siguiente estructura de proyecto:
.
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ └── filemanagementsystem
│ ├── FileManagementSystemApplication.java
│ ├── controller
│ │ └── FileController.java
│ └── model
│ └── File.java
└── resources
├── application.properties
└── templates
└── index.html
Ahora que tenemos un proyecto básico configurado, podemos comenzar a implementar nuestro sistema de administración de archivos.
Nuestro sistema de gestión de archivos necesitará almacenar información sobre los archivos que se están gestionando. Podemos hacer esto creando un modelo File
:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class File {
private String name;
private String type;
private long size;
}
La anotación @Data
de la biblioteca Lombok generará getters, setters y un método toString para nosotros. La anotación @Builder
nos permitirá crear objetos File
utilizando un patrón de construcción. Las anotaciones @NoArgsConstructor
y @AllArgsConstructor
generarán un constructor sin argumentos y un constructor que toma todos los campos como argumentos, respectivamente.
A continuación, necesitaremos crear un controlador para manejar las solicitudes a nuestro sistema de gestión de archivos. Podemos hacer esto creando un FileController
:
@Slf4j
@Controller
@RequestMapping("/files")
public class FileController {
@GetMapping
public String listFiles(Model model) {
// TODO: Implement this method
return "index";
}
@PostMapping
public String uploadFile(@RequestParam("file") MultipartFile file) {
// TODO: Implement this method
return "redirect:/files";
}
@GetMapping("/{id}")
public ResponseEntity<Resource> downloadFile(@PathVariable String id) {
// TODO: Implement this method
return null;
}
}
La anotación @Slf4j
de la biblioteca de Lombok generará un registrador para nosotros. La anotación @Controller
marcará esta clase como un controlador. La anotación @RequestMapping
asignará todos los métodos del controlador a la ruta /files
.
El método listFiles
manejará las solicitudes GET a la ruta /files
. Tomará un objeto 'Modelo' como parámetro y devolverá una Cadena que indica qué plantilla se debe representar.
El método uploadFile
manejará las solicitudes POST a la ruta /files
. Tomará un objeto MultipartFile
como parámetro y devolverá una cadena que indica qué plantilla se debe representar.
El método downloadFile
manejará las solicitudes GET a la ruta /files/{id}
. Tomará una identificación de cadena como parámetro y devolverá un objeto ResponseEntity
que contiene el archivo que se solicitó.
Tendremos que crear dos plantillas para nuestro sistema de administración de archivos: una para listar archivos y otra para cargar archivos. Podemos hacer esto creando un archivo index.html
en el directorio src/main/resources/templates
:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>File Management System</title>
</head>
<body>
<h1>File Management System</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Size</th>
<th></th>
</tr>
</thead>
<tbody>
<tr th:each="file : ${files}">
<td th:text="${file.name}"></td>
<td th:text="${file.type}"></td>
<td th:text="${file.size}"></td>
<td><a href="/files/[[${file.id}]]">Download</a></td>
</tr>
</tbody>
</table>
<form method="post" enctype="multipart/form-data">
<div>
<label>File:</label>
<input type="file" name="file"/>
</div>
<div>
<button type="submit">Upload</button>
</div>
</form>
</body>
</html>
Esta plantilla enumerará todos los archivos que se han cargado y proporcionará un formulario para cargar archivos nuevos.
Tendremos que configurar algunas cosas en nuestro archivo application.properties
:
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
server.port=8080
Las propiedades spring.thymeleaf.mode
, spring.thymeleaf.encoding
y spring.thymeleaf.content-type
configurarán Thymeleaf para usar HTML5, codificación UTF-8 y tipo de contenido de texto/html, respectivamente. La propiedad server.port
configurará el servidor para que se ejecute en el puerto 8080.
Ahora podemos ejecutar nuestra aplicación y probarla.
Primero, necesitaremos construir nuestro proyecto. Esto lo podemos hacer ejecutando el siguiente comando:
$ ./mvnw clean package
A continuación, podemos ejecutar nuestra aplicación usando el siguiente comando:
$ java -jar target/file-management-system-0.0.1-SNAPSHOT.jar
Ahora podemos acceder a nuestro sistema de gestión de archivos en http://localhost:8080.
En esta publicación, le mostramos cómo implementar un sistema de administración de archivos en una aplicación Spring Boot.