[JAVA] Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren

Leicht zu schaffen!

Sollte sein. Es ist überraschend einfach, dorthin zu gelangen. Es scheint, dass Sie diesen Weg vorerst ab Frühling 4 gehen können.

Aktivieren Sie die Funktionen zum Hochladen von Dispatcher- und Servlet-Dateien.

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.

Machen Sie die Ansichtsseite.

Lassen Sie uns eine Upload-Seite erstellen! Setzen Sie beim Hochladen einer Datei ** enctype = "multipart / form-data ** in form.

Meine Quelle ist

  1. Ich verwende Spring Security, also das Tag <form: form>
  2. Da ich das Upload-Formular verwende, ist die Funktion, dass ** modelAttribute ** angegeben 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 Sie einen serverseitigen Controller.

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;
	}
}

Lauf

Lass es uns laufen

Öffnen Sie zuerst den Upload-Bildschirm image.png

Wählen Sie ein Bild und senden Sie es!

Werfen wir einen Blick auf die Konsole.

image.png

Ich denke, der Server liest den Dateinamen richtig.:. ゜ ヽ (´∀`.) ノ ゜.:. ゜

Referenz 5.17. Datei hochladen https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/FileUpload.html

Recommended Posts

Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Implementieren Sie den Dateidownload mit Spring MVC
So realisieren Sie mit TERASOLUNA 5.x (= Spring MVC) das Hochladen großer Dateien
Ich habe versucht, mithilfe von JDBC Template mit Spring MVC eine Verbindung zu MySQL herzustellen
Datei-Upload mit Spring Boot
Ich habe versucht, TCP / IP + BIO mit JAVA zu implementieren
Ich habe versucht, mit Spring Data JPA zu beginnen
Ich habe versucht, Sterling Sort mit Java Collector zu implementieren
Ich habe versucht, mit Java zu interagieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
[Rails] Ich habe versucht, die Stapelverarbeitung mit der Rake-Task zu implementieren
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
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.
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, die Bildvorschau mit Rails / jQuery zu implementieren
Ich habe versucht, eine Spring MVC-Entwicklungsumgebung auf einem Mac zu erstellen
Ich habe versucht, eine flexible ODER-Zuordnung mit MyBatis Dynamic SQL zu implementieren
Ich habe es mit Spring versucht.
Ich habe versucht, das Iterator-Muster zu implementieren
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Implementieren Sie die Bildeingabe / -ausgabe mit Spring MVC
So erreichen Sie das Hochladen von Dateien mit Feign
So erzielen Sie mit Rest Template of Spring einen großen Datei-Upload
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports 2/3 (Formularvorlagenerstellung) zu drucken.
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, polymorph in Nogizaka zu implementieren.
Ich habe versucht, die Federbeinkonfiguration mit Coggle zu verwalten
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.
Ich wollte Spring Boot in einem Multiprojekt gradle
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe Spring Batch ausprobiert
Ich habe versucht, mit HCE-F von Android eine Funktion zu implementieren, die Felica Lite entspricht
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.
So erstellen Sie ein Excel-Formular mithilfe einer Vorlagendatei mit Spring MVC
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren
[Java 11] Ich habe versucht, Java auszuführen, ohne mit Javac zu kompilieren
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich habe versucht, Animationen mit der Blazor + Canvas-API zu zeichnen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
So testen Sie den Bildschirm zum Hochladen von Dateien mit Spring + Selenium
[Java] Ich habe versucht, die Yahoo API-Produktsuche zu implementieren
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Datei-Upload mit Spring Boot (keine mehrteilige Datei verwenden)
Ich habe versucht, mit Java und Spring eine Funktion / einen Bildschirm für den Administrator einer Einkaufsseite zu erstellen
[Swift] Ich habe versucht, mit UICollectionView eine Instagram-ähnliche Benutzeroberfläche mit nur Code ohne Storyboard zu implementieren