[JAVA] Téléchargement et téléchargement de fichiers à l'aide d'Ajax avec Spring Boot (sans JQuery)

Deux choses à faire

  1. Téléchargez l'image avec Ajax, stockez-la sur le serveur et affichez-la
  2. Sélectionnez l'image à afficher et appuyez sur le bouton d'affichage d'image pour la télécharger avec Ajax et afficher l'image.

Écran de démonstration

image.png

1. Téléchargement de fichiers

imageajax.html (partie)


<body>
	<h3>téléchargement de fichiers</h3>

	<form id="imageFormId">
		<input type="file" name="inputFileName" />
		<button type="button" onclick="uploadImage('imageFormId', 'myUploadedImageId')">Téléchargement d'image</button>
	</form>
	<img id="myUploadedImageId" style="width: 400px">

	<script>
		function uploadImage(imgForm, imgCtrl) {
			const formData = new FormData(document.getElementById(imgForm));
			const request = new XMLHttpRequest();
			request.onreadystatechange = function() {
				if (this.readyState == 4 && this.status == 200) {
					const img = document.getElementById(imgCtrl);
					const url = window.URL || window.webkitURL;
					//Afficher la réponse sous forme d'image
					img.src = url.createObjectURL(this.response);
				}
			}
			request.open("POST", "/uploadimage");
			request.responseType = 'blob';
			request.send(formData);
		}
	</script>
</body>

ImageAjaxController (partie)


	/**
	 *téléchargement de fichiers
	 */
	@PostMapping("/uploadimage")
	public ResponseEntity<byte[]> uploadImage(@RequestParam("inputFileName") final MultipartFile uploadFile) {

		if (uploadFile.isEmpty()) {
			return ResponseEntity.of(Optional.empty());
		}
		//Obtenir le chemin pour stocker les fichiers téléchargés
		final Path path = Paths.get("c:/uploaddir", uploadFile.getOriginalFilename());

		final byte[] bytes;
		try {
			//Obtenez le binaire du fichier téléchargé
			bytes = uploadFile.getBytes();
			//Stockage de fichiers
			Files.write(path, bytes);
		} catch (IOException e) {
			return ResponseEntity.of(Optional.empty());
		}
		return ResponseEntity.ok(bytes);
	}

application.yml


spring:
  servlet:
    multipart:
      max-file-size: 30MB
      max-request-size: 30MB

2. Sélection de fichiers

imageajax.html (partie)


<body>
	<h3>Sélection de fichiers</h3>

	<select id="selectImageId">
		<option value="a">a</option>
		<option value="b">b</option>
	</select>
	<button type="button" onclick="displayImage('selectImageId', 'mySelectedImageId')">Affichage de l'image</button>
	<img id="mySelectedImageId" style="width: 400px">

	<script>
		function displayImage(selectCtrl, imgCtrl) {
			const select = document.getElementById(selectCtrl);
			const request = new XMLHttpRequest();
			request.onreadystatechange = function() {
				if (this.readyState == 4 && this.status == 200) {
					const img = document.getElementById(imgCtrl);
					const url = window.URL || window.webkitURL;
					//Afficher la réponse sous forme d'image
					img.src = url.createObjectURL(this.response);
				}
			}
			//Envoyer des choix et obtenir des fichiers
			request.open("GET", "/selectimage/" + select.value);
			request.responseType = 'blob';
			request.send();
		}
	</script>
</body>

ImageAjaxController (partie)


	/**
	 *Sélection de fichiers
	 */
	@GetMapping("/selectimage/{selectNum}")
	public ResponseEntity<byte[]> getImage(@PathVariable final String selectNum) {

		//Obtenir le nom du fichier parmi les choix
		final String fileName;
		switch (selectNum) {
		case "a":
			fileName = "a.jpg ";
			break;
		case "b":
			fileName = "b.jpg ";
			break;
		default:
			return ResponseEntity.of(Optional.empty());
		}

		//Chemin du fichier
		final Path path = Paths.get("c:/selectdir", fileName);

		final byte[] bytes;
		try {
			//Lisez le dossier
			bytes = Files.readAllBytes(path);
		} catch (IOException e) {
			return ResponseEntity.of(Optional.empty());
		}
		return ResponseEntity.ok(bytes);
	}

Recommended Posts

Téléchargement et téléchargement de fichiers à l'aide d'Ajax avec Spring Boot (sans JQuery)
Testez la classe injectée sur le terrain dans le test de démarrage Spring sans utiliser le conteneur Spring
Obtenez des informations d'erreur à l'aide de DefaultErrorAttributes et ErrorAttributeOptions dans Spring Boot 2.3
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional
Sortie des journaux de demande et de réponse avec Spring Boot
Test des entités et référentiels JPA à l'aide de Spring Boot @DataJpaTest
Essayez d'utiliser un conteneur DI avec Laravel et Spring Boot
Politique de contre-mesure CSRF et exemple de mise en œuvre dans une application REST utilisant "Spring Boot" + "EXT JS"
Déployez des applications Spring Boot sur Heroku sans utiliser la CLI Heroku
Comment appeler et utiliser l'API en Java (Spring Boot)
Utilisez thymeleaf3 avec le parent sans spécifier spring-boot-starter-parent dans Spring Boot
8 choses à insérer dans DB en utilisant Spring Boot et JPA
Définir le paramètre contextuel dans Spring Boot
Multi-projets Spring Boot 2 avec Gradle
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Essayez d'utiliser Spring Boot Security
Développement facile d'applications Web avec STS et Spring Boot. Dans 10 minutes.
Intégré dans Spring Boot à l'aide d'un fichier de définition de bean nommé application.xml
Comparez Hello, world! Avec Spring Boot avec Java, Kotlin et Groovy
Image de l'application Spring Boot à l'aide de jib-maven-plugin et lancez-la avec Docker
Erreur inconnue dans la ligne 1 de pom.xml lors de l'utilisation de Spring Boot dans Eclipse
Spring Boot Hello World dans Eclipse
Développement d'applications Spring Boot dans Eclipse
Activer jQuery et Bootstrap dans Rails 6 (Rails 6)
Tutoriel Spring Boot à l'aide de l'authentification Spring Security
Écrire du code de test avec Spring Boot
Implémenter l'API REST avec Spring Boot
Fonction de profil Spring et application Spring Boot.
Qu'est-ce que @Autowired dans Spring Boot?
Implémenter l'application Spring Boot dans Gradle
Comment utiliser Thymeleaf avec Spring Boot
Créez un projet Spring Boot avec intellij et quittez immédiatement après le lancement
[Spring MVC] Implémentez les paramètres dynamiques inclus dans l'URL sans utiliser Facultatif (~ Java7)
[Spring Boot] Publiez des fichiers et d'autres données en même temps [Axios]
Déployer automatiquement des applications Web développées en Java à l'aide de Jenkins [Spring Boot App Edition]