1. Le principe de téléchargement de fichiers
1. Prérequis pour le téléchargement de fichiers:
un. La méthode du formulaire doit être publié
né L'enctitype du formulaire doit être multipART / Form-Data (il détermine la méthode de la demande post-demande et le type de données du corps de la demande)
c. Le type d'entrée fourni dans le formulaire est le domaine de téléchargement de fichiers de type de fichiers.
2. Utilisez des composants tiers pour obtenir le téléchargement de fichiers
1. Composant Commons-FileUpload:
pot: commons-fileupload.jar
Commons-io.jar
2. Classe ou interface de base
DiskFileItemFactory: Définissez l'environnement
public void setSizethReshold (int sizethreshold): définissez la taille du tampon. La valeur par défaut est de 10 Ko.
Lorsque le fichier téléchargé dépasse la taille du tampon, le composant de charge de fichiers téléchargera le fichier à l'aide d'un cache de fichier temporaire
public void setRepository (Java.io.File Repository): Définissez le répertoire où les fichiers temporaires sont stockés. Par défaut, le répertoire de stockage de fichiers temporaire du système.
ServletFileUpload: Classe de téléchargement de base (fonction principale: analyser le contenu corporel de la demande)
booléen isMultiPartContent (httpServleRequest? Request): détermine si le formulaire ENCType du formulaire de l'utilisateur est de type multipart / formulaire de forme.
Liste PARSEREQUEST (demande HttpServleRequest): analyser le contenu dans le corps de la demande
setFilesizEMax (4 * 1024 * 1024); // définir la taille d'un seul fichier téléchargé
upload.setSizemax (6 * 1024 * 1024); // définir la taille totale du fichier
FileItem: représente un champ de saisie dans le formulaire.
booléen isformfield (): est-ce un champ normal
String getFieldName: obtenez le nom de champ du champ normal
String getString (): Obtenez la valeur d'un champ normal
InputStream getInputStream (): Obtenez le flux d'entrée des champs téléchargés
String getName (): Obtenez le nom de fichier téléchargé
Exemple: Créez d'abord un dossier de fichiers dans le répertoire Web-Inf, c'est-à-dire que tous les fichiers doivent être téléchargés ici, c'est-à-dire pour éviter l'accès direct par d'autres.
1. Obtenez le vrai chemin des fichiers
String StorePath = getServletContext (). GetRealPath ("/ web-inf / files");
2. Configurer l'environnement
DiskfileItemfactory factory = new DiskFileItemFactory (); // où est le cache par défaut et le lieu de stockage de fichiers temporaires
3. Méthode de livraison du formulaire de juge
booléen isMultupart = servletFileupload.ismulTipartContent (demande); if (! IsMultupart) {System.out.println ("Télécharger la méthode mal!"); retour; }4. Classe de base de téléchargement de fichiers
ServletFileUpload upload = new ServletFileUpload (Factory); 5. Analyser // Parse List <Fichiers> items = upload.PaSeRequest (demande); pour (fichierItem item: items) {if (item.isformField ()) {// champ normal, nom de champ de chaîne soumis par le form = item.getFieldName (); // Nom de champ de la chaîne d'informations FieldValue = item.getString (); // Form Field Vale System.out.println (FieldName + "=" + FieldValue); } else // Traitement de fichiers {inputStream dans = item.getInputStream (); // Télécharger le nom de fichier c: /users/administrator/desktop/a.txt string name = item.getName (); // a juste besoin de string a.txt filename = name.substring (name.lastIndexof ("//") + 1); // Création de la chaîne de diffusion de sortie StoreFile = StorePath + "//" + nom de fichier; // Téléchargez l'adresse de sauvegarde du fichier outSorthStream out = new FileOutputStream (StoreFile); octet [] b = nouveau octet [1024]; int len = -1; while ((len = in.read (b))! = - 1) {out.write (b, 0, len); } in.close (); // Fermez le flux Out.close (); }}Écrire un formulaire
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServer () + path + "/";% "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = basepath%>"> <itle> mon jsp '1.jsp' de départ page </ title> <meta http-equiv = "cache-Control" non-cache "> <méta http-equiv =" Cache-Control ""> <méta http-equie content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! href = "Styles.css"> -> </ head> <body> <form action = "$ {pageConText.Request.ContextPath} / servlet / uploadservlet2" Method = "Post" ENCTYPE = "multipart / form-data"> username <entrée type = "Text" name = "username" /> <br/> <fort type = "file" name = "f1" /> <br/> <input type = "file" name = "f2" /> <br/> <input type = "soume" value = "enregistrer" /> </ form> </body> </html>Écrivez un servlet de soumission: UploadServlet2
package com.liuzhen.upload; import java.io.fileoutputStream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import java.util.list; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.apache.commons.fileupload.fileItem; import org.apache.commons.fileupload.fileUpLadexception; import org.apache.commons.fileupload.disk.diskfileItemfactory; import org.apache.commons.fileupload.servlet.servletFileupload; // introduction au fichier upload classe publique uploadServlet2 étend httpservlet {public Void Doget (httpServerquest demande, HttServlet IoException {// Définissez le codage request.SetcharAtteRencoding ("utf-8"); Response.SetContentType ("Text / HTML; charSet = UTF-8"); essayez {// télécharger le fichier String StorePath = getServletContext (). getRealPath ("/ web-inf / files"); // Définir l'environnement diskfileItemfactory factory = new DiskFileItemFactory (); // Méthode de transmission du formulaire de juge Formulaire ENCTYPE = Multipart / Form-Data Boolean IsMultuparT = ServletFileUpload.ismulTipartContent (demande); if (! IsMultupart) {System.out.println ("La méthode de téléchargement est incorrecte!"); retour; } ServletFileUpload upload = new ServletFileUpload (Factory); // Parse List <FichierItem> items = upload.PaSeRequest (demande); pour (fichierItem item: items) {if (item.isformField ()) {// champ normal, nom de champ de chaîne soumis par le form = item.getFieldName (); // Nom de champ de la chaîne d'informations FieldValue = item.getString (); // Form Field Vale System.out.println (FieldName + "=" + FieldValue); } else // Traitement de fichiers {inputStream dans = item.getInputStream (); // Télécharger le nom de fichier c: /users/administrator/desktop/a.txt string name = item.getName (); // a juste besoin de string a.txt filename = name.substring (name.lastIndexof ("//") + 1); // Création de la chaîne de diffusion de sortie StoreFile = StorePath + "//" + nom de fichier; // Téléchargez l'adresse de sauvegarde du fichier outSorthStream out = new FileOutputStream (StoreFile); octet [] b = nouveau octet [1024]; int len = -1; while ((len = in.read (b))! = - 1) {out.write (b, 0, len); } in.close (); // Fermez le flux Out.close (); }}} catch (fileUpLoAdException e) {throw new RuntimeException (e); }} public void doPost (httpsservletRequest request, httpservletResponse réponse) lève ServletException, ioException {doGet (request, réponse); }}Le fichier téléchargé se trouve dans l'application Tomcat.
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.