Le téléchargement de fichiers est très courant dans les applications Web. Il est très facile d'implémenter la fonction de téléchargement de fichiers dans Java Web Environment, car il existe déjà de nombreux composants développés en Java pour le téléchargement de fichiers sur Internet. Cet article utilise le composant le plus Commons-FileUpload comme exemple pour démontrer comment ajouter une fonction de téléchargement de fichiers sur les applications Web Java.
Le composant Commons-FileUpload est l'un des projets open source d'Apache et peut être téléchargé à partir de http://commons.apache.org/fileupload/. Ce composant est simple et facile à utiliser, vous permettant de télécharger un ou plusieurs fichiers à la fois et peut limiter la taille du fichier.
Après le téléchargement, dézip le package zip et copier Commons-fileupload-1.x.jar sur webapps de Tomcat / votre webapp / web-inf / lib /. Si le répertoire n'existe pas, veuillez créer votre propre répertoire.
Créez un nouveau uploadserservlet.java pour le téléchargement de fichiers:
package com.liaoxuefeng.web; public class fileuploadServlet étend httpservlet {private string uploaddir = "c: // temp"; @Override Protected void doPost (httpServletRequest req, httpservletResponse resp) lève ServletException, ioException {// todo:}}Lorsque le servlet reçoit la demande de poste émise par le navigateur, il met en œuvre le téléchargement de fichiers dans la méthode doPost (). Nous devons traverser le FileItemiterator et obtenir chaque fichieritemStream:
@OverRideProtected void doPost (httpServletRequest req, httpServletResponse resp) lève ServletException, ioException {try {servletFileupload upload = new ServletFileupload (); // Définissez la taille du fichier max sur 1 Mo: upload.setFileSizEmax (1024 * 1024); FileItemiterator it = upload.getItemiterator (req); // Gire avec chaque fichier: while (it.hasnext ()) {fileItemStream item = it.next (); if (! item.isformField ()) {// Il s'agit d'un fichier téléchargement: handleFileItem (item); }} req.getRequestDispatcher ("Success.jsp"). Forward (req, resp); } catch (fileUpLoAdException e) {Throw New Servlexception ("Impossible de télécharger le fichier.", E); }}Lisez le flux d'entrée des fichiers téléchargés dans la méthode HandleFileItem (), puis écrivez-le sur UploadDir, et le nom de fichier est généré au hasard par UUID:
void handleFileItem (FileItemStream Item) lève ioException {System.out.println ("Télécharger le fichier:" + item.getName ()); Fichier newUploadFile = new File (uploaddir + "/" + uuid.randomuuid (). ToString ()); octet [] tampon = nouveau octet [4096]; InputStream input = null; OutputStream output = null; try {input = item.openStream (); output = new BufferedOutputStream (new FileOutputStream (newUploadFile)); pour (;;) {int n = input.read (tampon); if (n == (- 1)) casser; output.write (tampon, 0, n); }} enfin {if (input! = null) {try {input.close (); } catch (ioexception e) {}}}Si vous souhaitez lire le dossier de téléchargement spécifié dans le fichier de configuration web.xml, vous pouvez l'initialiser dans la méthode init ():
@OverridePublic void init (servletConfig config) lève Servlexception {super.init (config); this.uploaddir = config.getInitParameter ("dir");}Enfin, configurez le servlet dans web.xml:
<? xml version = "1.0" Encoding = "UTF-8"?> <! DocType Web-App public "- // Sun Microsystems, Inc.//dtd Application Web 2.3 // en" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <s servlet> <Vertlet-Name> uploadServlet </ servlet-name> <servlet-class> com.liaoxuefeng.web.fileuploadservlet </ servlet-class> </ servlet> <servlet-mapping> <servlet-name> uploadservlet </vrlet-name> <url-stepter> / upload </rl-platern>
Après avoir configuré le servlet, démarrez Tomcat ou Résine et écrivez un test index simple.htm:
<html> <body> <p> fileuploadServlet Demo </p> <form name = "form1" action = "upload" metheth = "poster" enctype = "multipart / form-data"> <input type = "file" name = "file" /> <entrée type = "soumide" name = "bouton" value = "soumis" /> </ form
Remarque que Action = "Upload" Spécifie l'URL de mappage du fichier uploadservlet qui gère les fichiers téléchargés.
Lorsque le téléchargement est réussi, Success.jsp est affiché, sinon, une exception est lancée. Si la taille du fichier téléchargée dépasse 1 Mo que nous définissons, nous obtiendrons un fichierizelimitexechedException.
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.