Devrait être. Il est étonnamment facile d'y arriver. Il semble que vous puissiez suivre cette voie à partir du printemps 4 pour le moment.
Spring utilise un objet appelé "MultipartFile" lors du téléchargement de fichiers. Allumons ce paramètre dans Spring et Servlet
Définissons web.xml et application-config.xml (xml avec les paramètres Bean).
Tout d'abord, le fichier en plusieurs parties du répartiteur Spécifiez la taille de téléchargement. Le dernier élément est la taille du fichier temporaire que le serveur enregistre. Il semble préférable de spécifier quelque chose de manière explicite.
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>
<!--Mode de téléchargement de fichiers-->
<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>
Et maintenant, Spring peut gérer les fichiers en plusieurs parties. Ajoutons le résolveur multi-parties au bean.
application-config.xml
<!--Résolveur de téléchargement de fichiers-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>
C'est facile ici.
Créons une page de téléchargement! Lors du téléchargement d'un fichier, définissez ** enctype = "multipart / form-data ** sous forme.
Ma source est
Le reste n'est pas cette source spéciale. (Bien sûr 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>Veuillez saisir votre image de mer ou d'eau préférée</title>
</head>
<body>
<form:form action="imageComplete" method="post"
modelAttribute="ImageUploadForm" enctype="multipart/form-data">
Entrez votre image préférée de la mer ou de l'eau! > <
<input name="image" type="file" />
<input name="submit" type="submit">
</form:form>
</body>
</html>
Ceci est le formulaire de téléchargement reçu par le serveur
ImageUploadForm.java
import lombok.Data;
/**
*Formulaire d'inscription
* @author nozawa
*
*/
@Data
public class ImageUploadForm {
@NotNull
private MultipartFile image;
}
Créons maintenant un côté serveur qui reçoit les images téléchargées.
Tout d'abord, activez le formulaire de téléchargement.
ImageIOController.java
@Controller
public class ImageIOController {
@ModelAttribute(name = "ImageUploadForm")
public ImageUploadForm initForm(){
ImageUploadForm imageUploadForm = new ImageUploadForm();
/*
Réglage initial
*/
return imageUploadForm;
}
}
Ensuite, créez une méthode pour afficher l'écran de téléchargement.
ImageIOController.java
@RequestMapping(value = "/imageUpload", method = RequestMethod.GET)
public ModelAndView imageUpload() {
ModelAndView mv = new ModelAndView("ImageUpload");
return mv;
}
C'est le principal. Faites une partie pour recevoir l'image. Tout ce que vous avez à faire est de spécifier le formulaire de téléchargement comme argument! C'est super facile.
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) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
}
ModelAndView mv = new ModelAndView("ImageComplete");
return mv;
}
L'objet MultipartFile dans le formulaire de téléchargement est Ils accèdent aux fichiers temporaires qui existent sur le serveur. Vous pouvez également obtenir des données binaires correctement ヾ (.> ﹏ <.) ノ
L'ensemble du contrôleur ressemble à ceci
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();
/*
Réglage initial
*/
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) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
}
ModelAndView mv = new ModelAndView("ImageComplete");
return mv;
}
}
Lançons-le
Ouvrez d'abord l'écran de téléchargement
Sélectionnez une image et envoyez-la!
Jetons un coup d'œil à la console.
Je pense que le serveur lit correctement le nom du fichier.:. ゜ ヽ (´∀`.) Non.:. ゜
référence 5.17. Téléchargement de fichiers https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/FileUpload.html
Recommended Posts