[JAVA] Geben Sie einfach Bilder mit Spring MVC ein und geben Sie sie aus

Anmerkungen

Als Beispiel erstellt, da die Anforderung bestand, ein Bild mit SpringMVC hochzuladen und auszugeben. Es ist nur eine Beispielstufe, daher ignoriere ich die Validierung und überprüfe nicht die Erweiterung. Ich kann Bilder hochladen, aber ich habe sie nicht gespeichert. Für diejenigen, die es vorerst tun wollen.

Ausführungsumgebung

Die Ausführungsumgebung ist wie folgt

Name Version etc.
IDE sts-4.0.1.RELEASE
Java Java1.8
SpringFrameworkBoot 2.1.9
SpringDependencyManagement 1.0.8

Ablauf des Betriebs

Die zu erstellenden Beispiele können wie folgt klassifiziert werden (ausgenommen die FirstApplication-Klasse).

① HTML zum Hochladen von Bildern ② Formular zum Speichern von Bilddaten ③ Controller zum Übergeben von Bilddaten ④ HTML zum Anzeigen des hochgeladenen Bildes

Tatsächlicher Code

HTML entsprechend ①

upload.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8" />
    <title>upload.html</title>
</head>

<body>
    <!--Beachten Sie, dass der Inhalt des Bildes nicht gesendet wird, wenn Sie den Enctype nicht im Formular festlegen.-->
    <form th:action="@{/upload}" th:object="${imageForm}" method="post" enctype="multipart/form-data">
Dateien auswählen:<input type="file" th:field="*{image}" /><br /> <input type="submit" value="Senden" />
    </form>
</body>

</html>

Der Punkt ist enctype = "multipart / form-data" Ohne dies kann der Controller die Inhaltsdaten nicht empfangen (nur der Dateiname kann empfangen werden)

Form entsprechend ②

imageForm.java


package com.practice.demo_spring.web;

import org.springframework.web.multipart.MultipartFile;

public class ImageForm {

	private MultipartFile image;

	public MultipartFile getImage() {
		return image;
	}

	public void setImage(MultipartFile image) {
		this.image = image;
	}

}

Eine Formularklasse, die niemals passiert.

Regler entsprechend ③

UploadController.java


package com.practice.demo_spring.web;

import org.apache.tomcat.util.codec.binary.Base64;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UploadController {
	
	@ModelAttribute
	public ImageForm setForm() {
		return new ImageForm();
	}
	
	/**
	 *Erster localhost:8080/Hochladen mit zuerst.Stellen Sie ein, um auf HTML zuzugreifen
	 * @return upload.html
	 */
	@RequestMapping("/first")
	public String first() {
		return "upload";
	}
	
	
	/**
	 *Holen Sie sich die hochgeladenen Bilddaten und codieren Sie sie mit base64
	 *Ändern Sie die codierte Version in eine Zeichenfolge(Gleichzeitig geben Sie hier die Erweiterung als JPEG an.)Und geben Sie es an das nächste HTML weiter
	 * @param imageForm Hochgeladene Daten
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@PostMapping("/upload")
	public String upload(ImageForm imageForm, Model model) throws Exception {
		System.out.println(imageForm.getImage().getSize());
		StringBuffer data = new StringBuffer();
		String base64 = new String(Base64.encodeBase64(imageForm.getImage().getBytes()),"ASCII");
		data.append("data:image/jpeg;base64,");
		data.append(base64);
		model.addAttribute("base64image",data.toString());
		return "express";
	}

}

Als ein Prozess, (1) Holen Sie sich die in imageForm gespeicherten Bilddaten und machen Sie daraus ein Array von Bytes ② Codieren Sie es in base64 und ändern Sie es in String-Typ ③ Kombinieren Sie den zuvor geänderten String mit "data: image / jpeg; base64", um ein Formular zu erstellen, das mit <img ht: src = ""> angegeben werden kann. Dem obigen Fluss folgen

HTML entsprechend ④

express.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="UTF-8" />
    <title>express.html</title>
  </head>
  <body>
Das Bild ist<img th:src="${base64image}"/>ist
  </body>
</html>

Hier wird die von der Controller-Klasse empfangene Zeichenfolge in src angegeben und angezeigt.

Demo

Gehen Sie zuerst zu https: // localhost: 8080 / 2019-10-17_10h42_20.png

Wählen Sie die Bilddaten entsprechend aus 2019-10-17_11h00_26.png

Drücken Sie die Senden-Taste, um das hochgeladene Bild anzuzeigen 2019-10-17_11h01_09.png

Zur Zeit habe ich nur ein Beispiel erstellt. Fügen Sie danach bitte einen Scheck oder eine Funktion hinzu, wie Sie möchten.

Recommended Posts

Geben Sie einfach Bilder mit Spring MVC ein und geben Sie sie aus
Implementieren Sie die Bildeingabe / -ausgabe mit Spring MVC
[Anfänger] Laden Sie Bilder und Dateien mit Spring hoch [Autark]
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
Java-Konfiguration mit Spring MVC
Implementieren Sie den Dateidownload mit Spring MVC
PDF und TIFF mit Java 8 ausgeben
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 1/3 (Jasper Reports-Einstellungen) zu drucken.
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 3/3 (Spring MVC-Steuerung) zu drucken.
Feder mit Kotorin --2 RestController und Datenklasse
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 2/3 (Formularvorlagenerstellung) zu drucken.
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
HTTPS mit Spring Boot und Let's Encrypt
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports Extra Edition (Variables Edition) zu drucken.
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports Extra Edition (Bildausgabe) zu drucken.
Schreiben wir die Eingabe / Ausgabe von Java-Dateien mit NIO
Testen Sie den Controller mit Mock MVC im Spring Boot
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Aktualisieren Sie die Datenbank regelmäßig mit Spring Batch und My Batis
Beispiel für die Ausgabe eines Parameterprotokollprotokolls Java & Spring MVC
Holen Sie sich detaillierte Statistiken und bearbeiten Sie die Ausgabe mit Locust
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Kompatibilität von Spring JDBC und My Batis mit Spring Data JDBC (vorläufig)
Extrahieren Sie mit ffmpeg und OpenVINO Gesichtsbilder aus Videos
Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Verbinden Sie Spring Boot und Angular typsicher mit OpenAPI Generator
Ausgabe von Vektorgrafiken (PDF, SVG, PPT, EPS, SWF) mit Java Graphics 2D und verschiedenen Bibliotheken