1. Brève description
Les données au format multipART divisaient une forme en plusieurs parties, chaque partie correspondant à un champ de saisie. Dans le champ de saisie de la forme générale, les données de type texte seront placées dans sa pièce correspondante, mais si un fichier est téléchargé, sa pièce correspondante peut être binaire. Semblable à ceci:
2. Configurez l'analyseur multipar
Bien que les demandes en multiples en partie puissent sembler compliquées, il est facile de les gérer dans le Spring MVC. Avant d'écrire une méthode de contrôleur pour gérer le téléchargement de fichiers, nous devons configurer un analyseur multipar pour dire au DispatcherServlet comment lire la demande en multipar.
Spring a deux implémentations intégrées de MultipartResolver:
Configuration de StandardServletMultipartreSolver:
1. Déclaration Bean:
Configuration dans applicationContext.xml
La copie de code est la suivante: <bean id = "MultipartResolver" Brush: Java; "> @Bean (name =" MultipartResolver ") public standardervletMultipartResolver getStandardServletMultipartResolver () {return new StandardServletMultipArtResolver ();}
Conseils: Le nom de l'analyseur multipar doit être multipartrersolver, sinon une erreur sera signalée.
2. Configurer les paramètres de téléchargement:
* Configuration Web.xml
<VerTlet> <Serplet-Name> Dispatcherservlet </ Servlet-Name> <Servlet-Class> org.springframework.web.servlet.dispatcherservlet </ servlet-Class> <Init-Param> <Am param-Name> ContextConfiglocation </ Param-name> <Amvin-Value> ClassPath: ApplicationContext.xmlLe </ Param-value> </ Init-Param> CLASSPATH: ApplicationContext.xml <FOLD-on-startup> 1 </ Load-on-startup> <multipart-Config> <! - Téléchargez vers / tmp / upload Directory -> <location> / tmp / upload </ emplacement> <! - La taille du fichier est 2M -> <! - La demande entière ne dépasse pas 4m ->>> <max-request-size> 4194304 </ max-request-size> <! - Tous les fichiers doivent être écrits sur disque -> <file-size-threshold> 0 </ file-size-threshold> </ multipart-Config> </ servlet> <urstlet-Mapping> <Servlet-name> DispatterServlet </serplet-name> </ serflet-mapping>
* Configuration dans la classe de configuration
Hérité dans la classe de configuration d'AbstractannotationConfigDispatcherServletinitializer
@Override Protected void PersumeRegistration (servletRegistring.dynamic Enregistrement) {// Télécharger dans le répertoire / tmp / upload, la taille du fichier est de 2 m, la demande entière ne dépasse pas 4m et tous les fichiers doivent être écrits sur disque Enregistrement.SetMultipartingConfig (Nouveau (Nouveau (Nouveau (nouveau MultipartConfigelement ("e: // upload_ftp", 2097152 4194304,0)); }CommonsMultipartresolver Configuration:
1. Déclarer les haricots et configurer les paramètres de téléchargement
<bean id = "MultipartResolver"> <! - Définissez le répertoire de téléchargement / tmp / téléchargement; La capacité de fichier maximale est définie sur 2m; La taille maximale de la mémoire est définie sur 0, ce qui signifie que tous les fichiers seront écrits sur le disque; La capacité maximale globale de la demande en multiparte ne peut pas être définie -> <propriété name = "uploadTempDir" value = "/ tmp / upload" /> <propriété name = "maxuploadsize" value = "2097152" /> <propriété name = "maxinMemorySize" value = "0" /> </ bean>
La différence:
1. CommonsMultipartreSolver par rapport à StandardServletMultipartreSolver, il est impossible de définir la capacité maximale globale des demandes en multiples.
2. CommonsMultipartreSolver ne force pas la définition d'un chemin de fichier temporaire. Par défaut, ce chemin est le répertoire temporaire du conteneur servlet. StandardServletMultipartreSolver doit définir le chemin de fichier temporaire pour s'exécuter normalement. (Les répertoires téléchargés mentionnés ci-dessus sont tous des chemins de fichier temporaires)
3. SpringMVC gère les demandes
1. Formulaire frontal
<form action = "/ image" méthode = "post" encType = "multipart / form-data"> <input type = "file" name = "image"> <input type = "soume"> </ form>
CONSEILS: ENCTYPE = "Multipart / Form-Data" doit être défini pour indiquer que SpringMVC qu'il s'agit d'une demande en multipar.
2. Backend MVC accepte les demandes
@RequestMapping (value = "/ image", méthode = requestMethod.Post) public String Gethome (@RequestPart ("Picture") MultiartFile Picture) lance ioException {String name = image.getName (); octet [] bytes = picture.getBytes (); picture.transferto (nouveau fichier ("/" + image.getoriginalFileName ())); // Lorsque vous enregistrez le système de fichiers ici, utilisez un chemin relatif, par exemple, la configuration ici est /. Basé sur le répertoire de téléchargement configuré. C'est-à-dire que le chemin du fichier e: / upload_ftp / est le retour du répertoire enregistré "home"; }Conseils: 1. @RequestPart ("image"): Lorsque le formulaire d'enregistrement est soumis, l'attribut P Essence donnera un tableau d'octets, qui contient les données de pièce correspondantes dans la demande (spécifiée via @RequestPart). Si l'utilisateur soumet le formulaire sans sélectionner un fichier, le tableau sera vide (plutôt que null). Nous pouvons donc même utiliser le tableau d'octets [] pour recevoir des demandes en multipasse au lieu de multipartfile.
2. MultipartFile: L'utilisation de la méthode multipartfile à recevoir nous fournit de nombreuses méthodes pour effectuer les prochains travaux ...
3. Acceptez les fichiers téléchargés sous la forme d'une pièce
Quant au sujet, il n'y a pas beaucoup de différence entre l'interface de pièce et le multipartfile. Dans de nombreux cas, le nom de la méthode de pièce est exactement le même que le nom de la méthode multipartfile. Il existe des similitudes, mais légèrement différentes, comme getSUMTtedFileName () correspondant à GetoriginalFileName (). De même, write () correspond à transferto (), et à l'aide de cette méthode, nous pouvons écrire le fichier téléchargé dans le système de fichiers.
Il convient de mentionner que si vous acceptez les téléchargements de fichiers via des paramètres de partie lors de la rédaction de méthodes de contrôleur, il n'est pas nécessaire de configurer MultipartResolver. Ce n'est que lorsque vous utilisez un multipartfile, nous avons besoin de multipartrersolver.
@RequestMapping (value = "/ image", méthode = requestMethod.Post) public String Gethome (@RequestPart ("Picture") pièce Picture) lève ioException {Picture.Write ("/" + Picture.getSubmitedFileName ()); Retour "à la maison"; }Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.