Tout d'abord, permettez-moi de présenter le téléchargement d'un fichier
Classe d'entité
import java.sql.timestamp; / ** * * @Descrime de fichier téléchargement entité classe * * / public class upfile {private String id; // id key primaire génère aléatoirement la chaîne privée uuidName; // Nom UUID Private String FileName; // Nom de fichier String privé SavePath; // Enregistrer le PATH TORNIAT PRIVÉ UploadTime; // Télécharger le temps privé String Description; // Description du fichier Nom d'utilisateur de chaîne privée; // nom d'utilisateur public upfile () {super (); } public upfile (string id, string uuidName, String filename, String SavePath, horodatamp uploadtime, String Description, String Username) {super (); this.id = id; this.uuidName = uuidName; this.filename = nom de fichier; this.savePath = SavePath; this.uploadtime = uploadtime; this.description = description; this.userName = nom d'utilisateur; } public String getDescription () {return Description; } public String getFileName () {return filename; } public String getID () {return id; } public String getSavePath () {return SavePath; } public horodatamp getUploadTime () {return uploadTime; } public String getUserName () {return username; } public String getUuidName () {return uuidName; } public void setDescription (String Description) {this.description = Description; } public void setFileName (String filename) {this.filename = filename; } public void setid (String id) {this.id = id; } public void setsAvePath (String SavePath) {this.savePath = SavePath; } public void setuploadTime (horodatage uploadtime) {this.uploadtime = uploadTime; } public void setUsername (String username) {this.userName = username; } public void setuuidName (String uUIdName) {this.uuidName = uuidName; }}page
<% @ page langage = "java" import = "java.util. *" pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = basepath%>"> <itle> mon jsp 'upload.jsp' partage de la page </ title> <meta http-equiv = "Pragma" contenu = "no-cache"> <méta http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "styles.css"> -> </ head> <body> <h1> upload </h1> <form action = "$ {pageContext.Request.ContextPath} / upload" method = "Post" EncType = "Multipart / form-data"> <table type = "text" name = "username" /> </ td> </ tr> <tr> <td> téléchargez le fichier: </td> <td> <input type = "file" name = "file" /> </ td> </ tr> <tr> <td> description: </ td> <td> <TextArea Rows = "5" Cols = "50" Name = "Description"> </ Texraire> </ TD> Cols = "50" </tr> <tr> <td> <entrée type = "soumi" value = "upload start" /> </td> </tr> </ table> </ form> <div> $ {msg} </div> <a href = "$ {pagecontex Servlet
Importer java.io.ioException; Importer javax.servlet.servletException; import javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.apache.commons.fileupload.fileuploadbase.FileSizeliteXechedEdException; import org.apache.commons.fileupload.fileuploadbase.SizeliteXeateDeDException; import org.apache.commons.fileupload.servlet.servletFileUpload; import com.itheima.domain.upfile; import com.itheima.exception.myException; Importer com.itheima.service.upfileService; Importer com.itheima.service.impl.upFilesServiceImpl; import com.itheima.untils.webuntil; La classe publique UploadFileservlet étend HttpServlet {public void doGet (HttpServLetRequest Request, HttpServletResponse Response) lance ServletException, ioException {doPost (request, réponse); } public void doPost (httpsservletRequest request, httpservletResponse réponse) lève ServletException, ioException {// juger si le formulaire est composé de plusieurs parties si (! ServletFileUpload.ismultupartContent (request)) {request.SetAttribute («msg», «individual de la forme du formulaire, vérifiez si l'attribution de l'Enctype»); request.getRequestDispatcher ("/ upload.jsp"). Forward (demande, réponse); retour ; } // S'il s'agit d'un multi-parties, obtenez et traversez pour renvoyer un objet de téléchargement de fichiers, contenant toutes les informations téléchargées try {upfile upfile = webuntil.upload (request); UpFileService upfileService = new UpFileServiceImpl (); booléen drapeau = upfileService.add (upfile); if (flag) {request.setAttribute ("msg", "télécharger réussi"); request.getRequestDispatcher ("/ upload.jsp"). Forward (demande, réponse); retour ; } else {request.setAttribute ("msg", "téléchargement échoué, veuillez réessayer"); request.getRequestDispatcher ("/ upload.jsp"). Forward (demande, réponse); retour ; }} catch (fileSizeliteXechedException e) {e.printStackTrace (); request.setAttribute ("msg", "taille de fichier unique, dépassant la limite maximale"); request.getRequestDispatcher ("/ upload.jsp"). Forward (demande, réponse); retour ; } catch (sizelimiteXechedEdException e) {e.printStackTrace (); request.setAttribute ("msg", "taille totale du fichier, dépassant la limite maximale"); request.getRequestDispatcher ("/ upload.jsp"). Forward (demande, réponse); retour ; }}}Outils
Importer java.io.file; import java.io.filenotfoundException; Importer java.io.fileOutputStream; Importer java.io.ioException; import java.io.inputStream; import java.io.outputStream; Importer java.io.usupportEnCoDingException; import java.util.arraylist; Importer java.util.list; import java.util.uuid; Importer javax.servlet.http.httpservletRequest; import org.apache.commons.fileupload.fileItem; import org.apache.commons.fileupload.fileuploadbase; import org.apache.commons.fileupload.fileuploadbase.FileSizeliteXechedEdException; import org.apache.commons.fileupload.fileUpLadexception; import org.apache.commons.fileupload.progressListener; import org.apache.commons.fileupload.disk.diskfileItemfactory; import org.apache.commons.fileupload.servlet.servletFileUpload; import com.itheima.domain.upfile; import com.itheima.exception.myException; / ** * Classe d'outils de téléchargement de fichiers * @describe toDo * * / classe publique webututil {/ ** * Méthode de téléchargement de fichiers * @param demande de passez le paramètre de la demande dans * @return return un objet upfile * @throws filesizelitexechedException * @throws sizelimitexedException * @throws ioException * / public static upfile upload upload (hTTPSerSerre FileSizeliteXeateDeDException, SizeLimiteXeateDeDException {upfile upfile = new UpFile (); ArrayList <string> fileList = initlist (); Essayez {// Obtenir l'objet de fichier de disque Factory DiskFileItemFactory Factory = new DiskFileItemFactory (); String tmp = request.getSession (). GetServletContext (). GetRealPath ("/ tmp"); System.out.println (TMP); // Initialiser Factory SetFactory (Factory, TMP); // Obtenez un fichier téléchargement analyseur servletFileUpload upload = new ServletFileUpload (Factory); // Initialiser l'analyseur SetUpload (upload); // obtient des fichiers list <FeleItem> list = upload.parsErequest (request); // Voyage pour (FileItem items: list) {// juger s'il s'agit d'un objet de formulaire ordinaire if (itels.isformField ()) {// Obtenez le nom du formulaire de téléchargement FieldName = itels.getFieldName (); // Valeur String fieldValue = itels.getString ("UTF-8"); // juge if ("username" .equals (fieldname)) {// set upfile.seserName (fieldValue); } else if ("Description" .Equals (fieldName)) {// Définissez l'attribut upfile.setDescription (fieldValue); }} else {// Le fichier est-il prêt à télécharger // obtient le nom de fichier String filename = itels.getName (); // Gérez les différences de noms de fichiers obtenus en raison de différents navigateurs int index = filename.LastIndexof ("//"); if (index! = - 1) {filename = filename.substring (index + 1); } // générer des noms de fichiers aléatoires String uUIdName = generateFileName (fileName); // Get Téléchargé de la chaîne de chemin de fichier SavePath = request.getSession (). GetServletContext (). GetRealPath ("/ web-inf / upload"); // Obtenez un flux d'entrée dans l'objet de demande inputStream dans = items.getInputStream (); // Brisez le fichier et stockez-le dans différents chemins, trouvez le chemin SavePath = GeneraterandomDir (SavePath, UuidName); // Copiez le fichier uploadfile (in, SavePath, uuidName); String id = uuid.randomuuid (). ToString (); upfile.setid (id); upfile.setsAvepath (SavePath); upfile.setuuidName (uuidName); upfile.setFileName (nom de fichier); // effacer les éléments de cache.Delete (); }}} catch (fileuploadbase.fileSizeliteXechedException e) {// en tête d'une exception jet e; } catch (fileUploadBase.SizeliteXechedException e) {// exception lance e; } catch (fileUpLoadexception e) {e.printStackTrace (); } catch (UnportEnCcodingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); } catch (exception e) {e.printStackTrace (); } return upfile; } / ** * Initialiser la liste des fichiers * @return * / private static arrayList <string> initlist () {arrayList <string> list = new ArrayList <string> (); list.add (". jpg"); list.add (". rar"); list.add (". txt"); list.add (". png"); Liste de retour; } / ** * Copier le fichier * Stream d'entrée dans @param dans les éléments * @param SavePath Save Path * @param uuidName Nom du fichier * / Private Static void uploadFile (InputStream in, String SavePath, String uUIdName) {// get file file file = new File (SavePath, uuidName); OutputStream out = null; essayez {int len = 0; octet [] buf = nouveau octet [1024]; // Obtenez le flux de sortie OUT = new FileOutputStream (fichier); while ((len = in.read (buf))! = - 1) {out.write (buf, 0, len); }} catch (filenotFoundException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); } enfin {try {in.close (); } catch (ioException e) {e.printStackTrace (); } essayez {out.close (); } catch (ioException e) {e.printStackTrace (); }}} / ** * Générer un chemin de stockage aléatoire * @Param SavePath Save Path * @param uuidName Le nom UUID généré * @return * Utilisez HashCode pour terminer * / Private Static String GeneraTandomDir (String SavePath, String UuidName) {// Convert à Hashcode System.out.println ("Upload Path" + Savepath); System.out.println ("uuidName" + uuidName); int hashcode = uuidName.hashCode (); // Container StringBuilder sb = new StringBuilder (); while (hashcode> 0) {// int 15 int tmp = hashcode & 0xf; SB.APPEND ("/"); sb.append (tmp + ""); hashCode = hashcode >> 4; } // Split New Path String Path = SavePath + sb.ToString (); System.out.println ("Path" + Path); Fichier fichier = nouveau fichier (chemin); // jugez si le chemin existe si (! File.exists ()) {// créer file.mkDirs (); } // renvoie le chemin de retour du chemin de sauvegarde; } / ** * Générer un nouveau nom de fichier * @param uuidName aléatoire ID Nom * @param fileName Nom d'origine * @return * / private static String generateFileName (String FileName) {String uuidName = uUid.randomuUid (). ToString (); return uuidName.replace ("-", "") .toString () + "_" + filename; } / ** * L'analyse d'initialisation * @param upload * / private static void setupload (servletFileUpload upload) {// set le caractère codage upload.setheDerencoding ("utf-8"); // Définir la taille du fichier upload.setFileSizEMAX (1024 * 1024 * 20); // Définir la taille totale du fichier upload.setsiSizEMAX (1024 * 1024 * 50); // Définir PROGRESS Écouteur Upload.SetProgressListener (new ProgressListener () {public void Update (long pbytesRead, long pcontentLength, int Pittems) {System.out.printlngth ("read:" + pBytesRead + ", total:" + pconttentLength * @Param TMP Buffer Directory * / Factory STATIC STATIQUE PRIVÉE (DISKFILEITEMFACTORY, String TMP) {/// Configurez le fichier de fichier de valeur d'initialisation. Télécharger deux fichiers
Servlet
La classe publique DowpFileServlet étend HttpServlet {public void doGet (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {doPost (request, réponse); } public void doPost (request httpServLetRequest, httpsservletResponse réponse) lève Servlexception, ioException {// get id String id = request.getParameter ("id"); // L'interface de la couche commerciale upfileService upfileService = new UpFileServiceImpl (); // Trouvez cet objet en fonction de l'id upfile upfile = upFileService.FinDupFileById (ID); if (upfile == null) {return; } // Obtenez le vrai nom de la chaîne de fichiers filename = upfile.getFileName (); // s'il y a chinois dans le nom de fichier, il doit être transcodé, sinon il n'y aura pas de nom de fichier filename = urlencoder.encode (fichier, "utf-8"); // String de nom modifié uuidName = upfile.getUuidName (); // Enregistrer la chaîne de path SavePath = upfile.getsAvePath (); File file = new File (SavePath, uuidName); // Déterminez si le fichier existe si (! File.exists ()) {request.setAttribute ("msg", "Le fichier téléchargé a expiré"); request.getRequestDispatcher ("/ index"). Forward (demande, réponse); retour; } // Définissez le fichier de téléchargement de téléchargement de la réponse de l'information Response.sethEader ("Content-Disposition", "Picement; filename =" + filename); // Utilisez IO Stream pour sortir InputStream dans = new FileInputStream (fichier); ServletOutputStream out = Response.getOutputStream (); int len = 0; octet [] buf = nouveau octet [1024]; while ((len = in.read (buf))! = - 1) {out.write (buf, 0, len); } in.close (); }}base de données
Créer une base de données upload_download_exercise; Utilisez upload_download_exercise; Créer une table upfiles (id varchar (100), // Utilisez UUID pour générer uUIdName varchar (255), // uUid plus le nom de fichier d'origine FileName Varchar (100), // Nom de fichier réel sauvegarde varchar (255), // Save Path uploadTime TimeStamp, // upload time Description Varchar (255), // décrivait ussername varchar (10) Uploader);
Ce qui précède est le contenu pertinent de Java à l'aide de commos-fileupload pour réaliser le téléchargement et le téléchargement de fichiers, j'espère que cela sera utile à tout le monde.