Trois façons de télécharger des fichiers dans SpringMVC, il suffit de télécharger le code, vous pouvez dire en un coup d'œil
réception:
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> </ title> Titre ici </ title> </-head> <body> <formulaire de nom =" Sonnaire " action = "/ springmvc006 / fileupload" metheth = "post" EncType = "multipart / form-data"> <h1> Télécharger les fichiers à l'aide de streaming </h1> <input type = "file" name = "file"> <input type = "soumider" value = "upload" // form> <form name = "form2" action = "/ springmvc006 / fileupLoad2" "méthode =" Form2 "Action =" / springmvc006 / fileupLoad2 "" méthode = "post" ENCTYPE = "Multipart / Form-Data"> <h1> Téléchargez des fichiers à l'aide de File.Transfer Méthode fournie par Multipart </ H1> <Input Type = "File" Name = "File"> <Input Type = "Soumide" Value = "Upload" /> </ form> <form Name = "Form2" Action = "/ Springmvc006 / SpringUpload" Méthode = "post" ENCTYPE = "Multipart / Form-data"> <h1> Téléchargez le fichier à l'aide de la méthode fournie par Spring MVC </H1> <Input Type = "File" Name = "File"> <Input Type = "Soumide" Value = "Upload" /> </form> </ body> </html>
Configuration:
<! - Multipart Fichier Upload -> <bean id = "MultipartResolver"> <propriété name = "maxuploadSize" value = "104857600" /> <propriété name = "maxinMemorySize" value = "4096" /> <beanf name = "Defsenceding" value = "utf-8"> </ propriété> </ bean>
Dans les coulisses:
Méthode 1:
/ * * Téléchargez le fichier via Stream * @RequestParam ("File") encapsuler le fichier obtenu par le nom = Control de fichiers dans CommonsMultiPartFile Object * / @RequestMapping ("FileUpload") Public String FileUpload (@RequestParam ("File") CommonsMultiparpart File File) Throw startTime = System.CurrentTimemillis (); System.out.println ("FileName:" + file.getoriginalFileName ()); essayez {// obtenir le flux de sortie OutputStream OS = new FileOutputStream ("e: /" + new Date (). GetTime () + file.getoriginalFileName ()); // obtient le flux d'entrée CommonsMultupartile pour obtenir directement le flux du fichier inputStream is = file.getInputStream (); int temp; // lire et écrire des octets un par un à while ((temp = is.read ())! = (- 1)) {os.write (temp); } os.flush (); os.close (); is.close (); } catch (filenotfoundException e) {// TODO Block de capture généré automatiquement e.printStackTrace (); } Long EndTime = System.CurrentTimeMillis (); System.out.println ("Temps d'exécution de la méthode ONE:" + String.ValueOf (Bume-temps-Starttime) + "MS"); retourner "/ succès"; }Méthode 2:
/ * * Utilisez File.tranSto pour enregistrer le fichier téléchargé * / @RequestMapping ("FileUpload2") Public String FileUpload2 (@RequestParam ("File") CommonsMultiparTfile File lance ioException {Long starttime = System.CurrentTimemillis (); System.out.println ("FileName:" + file.getoriginalFileName ()); String path = "e: /" + new Date (). GetTime () + file.getoriginalFileName (); File newFile = new File (chemin); // Écrivez le fichier directement via la méthode CommonsMultupartile (Remarque cette fois) File.transferto (newFile); Long EndTime = System.CurrentTimemillis (); System.out.println ("L'heure d'exécution de la méthode deux:" + string.valueof (fin de starttime) + "MS"); retourner "/ succès"; }Méthode 3:
/ * * Utilisez la méthode de téléchargement des fichiers fournis par Spring * / @RequestMapping ("SpringUpload") public String SpringUpload (HttpServLetRequest Request) lance illégalStateException, ioException {long startTime = System.CurrentTimemillis (); // Initialisez le contexte actuel de CommonsMutipArtresolver (analyseur multipart) CommonsMultipartreSolver MultipartResolver = new CommonsMultipartreSolver (request.getSession (). GetServletContext ()); // Vérifiez s'il y a ENCTYPE = "Multipart / Form-data" dans le formulaire if (MultipartResolver.ismultupart (request)) {// Changer la demande en demande multipart multipartHtTTPServLetRequest MultiRequest = (multipartHTTPServleTrequest) request; // Obtenez tous les noms de fichiers dans MultiRequest Iterator iter = MultiRequest.getFileNames (); while (iter.hasnext ()) {// transfuser tous les fichiers à la fois à multipartfile file = multi-painquest.getFile (iter.next (). toString ()); if (file! = null) {String path = "e: / springupload" + file.getoriginalFileName (); // télécharger file.transferto (nouveau fichier (chemin)); }}} Long EndTime = System.CurrentTimeMillis (); System.out.println ("L'heure d'exécution de la méthode trois:" + string.valueof (fin de starttime) + "MS"); retourner "/ succès"; }Jetons un coup d'œil au temps de téléchargement du test:
La première fois que j'ai utilisé un fichier 4m:
nom de fichier: test.rar
Méthode 1 Temps d'exécution: 14712 ms
nom de fichier: test.rar
Méthode 2 Temps d'exécution: 5 ms
Méthode 3 Temps d'exécution: 4 ms
La deuxième fois: j'utilise un fichier 50m
La progression de la méthode est très lente et cela prendra 5 minutes.
Méthode 2 Temps d'exécution: 67 ms
Méthode 3 Temps d'exécution: 80 ms
D'après les résultats des tests, nous pouvons voir que la méthode de téléchargement de fichiers à l'aide de SpringMVC est beaucoup plus rapide!
Pour le résultat du test 2: il se peut que la méthode trois doit être recherchée une par une, donc elle doit être plus lente. Mais de manière générale, nous avons la méthode 3 car elle peut nous fournir plus de méthodes
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.