Sollte sein. Es ist überraschend einfach, dorthin zu gelangen. Es scheint, dass Sie diesen Weg vorerst ab Frühling 4 gehen können.
Spring verwendet beim Hochladen von Dateien ein Objekt namens "MultipartFile". Lassen Sie uns diese Einstellung in Spring und Servlet aktivieren
Lassen Sie uns web.xml und application-config.xml (xml mit Bean-Einstellungen) festlegen.
Zunächst die mehrteilige Datei des Dispatchers Geben Sie die Upload-Größe an. Das letzte Element ist die Größe der temporären Datei, die der Server speichert. Es scheint besser, etwas explizit anzugeben.
web.xml
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!--Datei-Upload-Modus-->
<multipart-config>
<max-file-size>5242880</max-file-size>
<max-request-size>5242880</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet>
Und jetzt kann Spring mehrteilige Dateien verarbeiten. Fügen wir der Bean Multipart Resolver hinzu.
application-config.xml
<!--Datei-Upload-Resolver-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>
Hier ist es einfach.
Lassen Sie uns eine Upload-Seite erstellen! Setzen Sie beim Hochladen einer Datei ** enctype = "multipart / form-data ** in form.
Meine Quelle ist
Der Rest ist nicht diese spezielle Quelle. (Natürlich jsp)
ImageUpload.html
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<head>
<meta content="ja" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Bitte geben Sie Ihr Lieblingsbild für Meer oder Wasser ein</title>
</head>
<body>
<form:form action="imageComplete" method="post"
modelAttribute="ImageUploadForm" enctype="multipart/form-data">
Geben Sie Ihr Lieblingsbild für Meer oder Wasser ein! > <
<input name="image" type="file" />
<input name="submit" type="submit">
</form:form>
</body>
</html>
Dies ist das Upload-Formular, das von der Serverseite empfangen wird
ImageUploadForm.java
import lombok.Data;
/**
*Anmeldeformular
* @author nozawa
*
*/
@Data
public class ImageUploadForm {
@NotNull
private MultipartFile image;
}
Erstellen wir nun eine Serverseite, die die hochgeladenen Bilder empfängt.
Aktivieren Sie zunächst das Upload-Formular.
ImageIOController.java
@Controller
public class ImageIOController {
@ModelAttribute(name = "ImageUploadForm")
public ImageUploadForm initForm(){
ImageUploadForm imageUploadForm = new ImageUploadForm();
/*
Grundeinstellung
*/
return imageUploadForm;
}
}
Erstellen Sie als Nächstes eine Methode zum Anzeigen des Upload-Bildschirms.
ImageIOController.java
@RequestMapping(value = "/imageUpload", method = RequestMethod.GET)
public ModelAndView imageUpload() {
ModelAndView mv = new ModelAndView("ImageUpload");
return mv;
}
Dies ist die Hauptsache. Machen Sie einen Teil, um das Bild zu erhalten. Sie müssen lediglich das Upload-Formular als Argument angeben! Es ist super einfach.
ImageIOController.java
@RequestMapping(value = "/imageComplete", method = RequestMethod.POST)
public ModelAndView imageUploadComplete(ImageUploadForm imageUploadForm) {
System.out.println(imageUploadForm.getImage().getOriginalFilename());
Integer FileSize = (int) (imageUploadForm.getImage().getSize());
byte[] ImageBinary = new byte[FileSize];
try {
ImageBinary = imageUploadForm.getImage().getBytes();
} catch (IOException e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
}
ModelAndView mv = new ModelAndView("ImageComplete");
return mv;
}
Das MultipartFile-Objekt im Upload-Formular lautet Sie greifen auf temporäre Dateien zu, die auf dem Server vorhanden sind. Sie können Binärdaten auch richtig abrufen ヾ (.> ﹏ <.) ノ
Der gesamte Controller sieht so aus
ImageIOController.java
package com.TsugaruInfo.controller;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.TsugaruInfo.formmodel.ImageUploadForm;
import com.TsugaruInfo.formmodel.RegisterForm;
@Controller
public class ImageIOController {
@ModelAttribute(name = "ImageUploadForm")
public ImageUploadForm initForm(){
ImageUploadForm imageUploadForm = new ImageUploadForm();
/*
Grundeinstellung
*/
return imageUploadForm;
}
@RequestMapping(value = "/imageUpload", method = RequestMethod.GET)
public ModelAndView imageUpload() {
ModelAndView mv = new ModelAndView("ImageUpload");
return mv;
}
@RequestMapping(value = "/imageComplete", method = RequestMethod.POST)
public ModelAndView imageUploadComplete(ImageUploadForm imageUploadForm) {
System.out.println(imageUploadForm.getImage().getOriginalFilename());
Integer FileSize = (int) (imageUploadForm.getImage().getSize());
byte[] ImageBinary = new byte[FileSize];
try {
ImageBinary = imageUploadForm.getImage().getBytes();
} catch (IOException e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
}
ModelAndView mv = new ModelAndView("ImageComplete");
return mv;
}
}
Lass es uns laufen
Öffnen Sie zuerst den Upload-Bildschirm
Wählen Sie ein Bild und senden Sie es!
Werfen wir einen Blick auf die Konsole.
Ich denke, der Server liest den Dateinamen richtig.:. ゜ ヽ (´∀`.) ノ ゜.:. ゜
Referenz 5.17. Datei hochladen https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/FileUpload.html