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.
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 |
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
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)
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.
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
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.
Gehen Sie zuerst zu https: // localhost: 8080 /
Wählen Sie die Bilddaten entsprechend aus
Drücken Sie die Senden-Taste, um das hochgeladene Bild anzuzeigen
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