[JAVA] [Débutant] Téléchargez des images et des fichiers avec Spring [Autosuffisant]

environnement

répertoire
.
└── _src
    └── _main
        ├── _java
        |   ├── _com.example.demo
        |       ├── FileUpdateController
        |       └── DemoApplication 
        └── _resources
            ├── _static
            |   ├── bootstrap.css
            |   ├── bootstrap.min.css
            |   └── training.css
            ├── _templates
            |   ├── uploadView.html
            |   └── uploadStatusView.html
            └── application.properties

Objectif

** Implémenter la fonction de téléchargement d'images et de fichiers **

Contenu

pom.xml

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

application.properties

application.properties


spring.thymeleaf.mode=HTML
spring.datasource.url=jdbc:mysql://localhost:3306/Nom de la base de données?autoReconnect=true&
useSSL=false&serverTimezone=JST
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.servlet.multipart.max-file-size=15MB
spring.servlet.multipart.max-request-size=15MB
Demo.application.java

Demo.application.java



package com.example.demo;

import com.example.demo.controller.FileUploadController;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

import java.io.File;

@SpringBootApplication
@ComponentScan({"com.example.demo", "controller"})
public class DemoApplication {

	public static void main(String[] args) {
		new File(FileUploadController.uploadDirectory).mkdir();
		SpringApplication.run(DemoApplication.class, args);
	}

}
FileUploadController.java

FileUploadController.java


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

@Controller
public class FileUploadController {
    public static String uploadDirectory = System.getProperty("user.dir")+"uploads";

    @RequestMapping("/")
    public String UploadPage(Model model){
        return "uploadView";

    }

    @RequestMapping("/upload")
    public String upload(Model model, @RequestParam("files") MultipartFile[] files){
        StringBuilder fileNames = new StringBuilder();
        for(MultipartFile file : files){
            Path fileNameAndPath = Paths.get(uploadDirectory, file.getOriginalFilename());
            fileNames.append(file.getOriginalFilename());
            try {
                Files.write(fileNameAndPath, file.getBytes());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        model.addAttribute("msg", "Successfully uploaded files "+ fileNames.toString());
        return "uploadStatusView";
    }
}

uploadView.html

uploadView.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <head>  
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="files" multiple>
        <input type="submit" value="Upload Files">
    </form>
    </body>
</html>
uploadStatusView.html

uploadStatusView.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div th:if="${msg}">
        <span th:text="${msg}"></span>
    </div>
    <div>
        <span><a href="/">Upload More</a></span>
    </div>
</body>
</html>

La source

You Tube

Recommended Posts

[Débutant] Téléchargez des images et des fichiers avec Spring [Autosuffisant]
Juste des images d'entrée et de sortie avec Spring MVC
[Java] Téléchargez une image et convertissez-la en Base64
Faites glisser et déposez des fichiers avec JavaFX
[Java] Lecture et écriture de fichiers avec OpenCSV
HTTPS avec Spring Boot et Let's Encrypt
Mettre à jour périodiquement la base de données avec Spring Batch et My Batis
[Ruby on Rails] Téléversement de plusieurs images avec refile
[Review] Lecture et écriture de fichiers avec java (JDK6)
Essayez d'utiliser un conteneur DI avec Laravel et Spring Boot
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
Compatibilité de Spring JDBC et My Batis avec Spring Data JDBC (provisoire)
Mémo d'utilisation de Spring Security: coopération avec Spring MVC et Boot
Extraire des images de visage à partir de vidéos avec ffmpeg et OpenVINO
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Connectez le port en avant avec SSH pour envoyer et recevoir des fichiers
Tentative de SSR Vue.js avec Spring Boot et GraalJS
Connectez Spring Boot et Angular en toute sécurité avec OpenAPI Generator
Téléchargement de fichiers avec Spring Boot (ne pas utiliser de fichier en plusieurs parties)
[Java] Développement avec plusieurs fichiers en utilisant package et import