Le téléchargement de fichiers est très courant dans les applications Web. Je vais maintenant présenter le téléchargement de fichiers en fonction du servlet. Le téléchargement de fichiers basé sur Struts2 peut être affiché:
Code côté page:
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "gbk"%> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <title> registre </ title> </-head> <pody> <form name = "form1" onSubMit = "Registre =" on_submit () "action =" registreservlet "method =" post "enctype =" multipart / form-data "> <intrut type =" text "name =" uname1 "id =" mot de passe "/> <entrée type =" Text "name =" uname2 "id =" uname2 "/> <intrut type =" mot de passe "name =" mot de passe1 "id =" mot de passe "/> <fort type =" name = "mot de passe" "" id = "mot de passe" /> <fort type = "Name =" Name = "Passway1" id = "Password" /> <fant type = "Name =" Name = "Passway1" id = "Password" /> <fant type = "Name =" Name = "Passway1" id = "Passway" /> <fant Type = "Name =" Motways "" "" ID = "Mot de passe" /> <fort Type = "Name =" Motway id = "mot de passe" /> <input type = "radio" value = "mâle" checked = "checked" name = "sexe" /> mâle <input type = "radio" value = "feme" name = "sexe" /> <bout type = "text" name = "e-mail" value = "" id = "login" /> <br/> <br/> <entrée type = "file" name = "file1" Value = "Enregistrement complet" /> </ form> </ body> </html>
Une chose à noter ici est que le formulaire de formulaire téléchargé par le fichier doit être ENCTYPE = "Multipart / Form-data"; Ici, nous interagissons directement avec l'arrière-plan sans interaction Ajax. Si vous devez utiliser Ajax, vous pouvez voir: http://www.cnblogs.com/shenliang123/category/372520.html
Continuons à examiner la mise en œuvre du code de Servlet:
package com.xidian.bbs.servlet; import java.io.ioexception; import java.io.printwriter; import java.net.inetaddress; import java.sql.connection; import java.sql.resultSett; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; com.jspsmart.upload. *; import com.xidian.bbs.bean.bean; import com.xidian.bbs.bean.registerbean; import com.xidian.bbs.util.dbaccess; import com.xidian.bbs.xitil.iptimestamp; @suppresswarning DOGT (HttpServLetRequest Request, HttpServletResponse Response) lève Servlexception, ioException {réponse.SetContentType ("Text / Html"); Response.SetcharAtterencoding ("GBK"); request.SetcharAtterencoding ("gbk"); SmartUpload smart = new smartUpload (); Try {// PageContext est un objet intégré de JSP. Il ne peut pas être utilisé directement dans le servlet et un certain traitement est nécessaire. Jspfactory _jspxfactory = null; PageContext pageContext = null; _jspxfactory = jspfactory.getDefaultFactory (); pageContext = _jspxfactory.getPageContext (this, demande, réponse, "", true, 8192, true); Smart.Initialize (PageContext); // Initialisez l'opération de téléchargement Smart.Upload (); Iptimestamp its = new iptimestamp (inetAddress.getLocalHost (). GethostAddress ()); // request.getRemoteaddr () obtient l'adresse IP de l'utilisateur // System.out.println ("L'IP est obtenu est" + inetaddress.getLocalHost (). GethostAddress ()); // Si vous souhaitez implémenter le téléchargement par lots de fichiers, il vous suffit d'utiliser un pour boucle pour la boucle et de modifier 0 dans getFile (0) à i pour chaîner ext = smart.getFiles (). GetFile (0) .getFileExt (); // c'est l'extension pour obtenir le fichier, getFile (0) est le seul fichier de fichiers upload fileName = itS.GetIpTiMerand () + "" + extension; //System.out.println(" le nom de fichier obtenu est "+ nom de fichier); //this.getServletContext().getRealPath("/ ") Pour obtenir le répertoire Tomcat, il est placé dans le dossier de téléchargement. java.io.file.separator est une opération sûre // String realPath = ""; //this.getServletContext().getRealPath("/")+ smart.getFiles (). getFile (0) .Saveas ("/ headupload" + java.io.file.separator + nom de fichier); String realPath = "HeadUpload /" + FileName + ""; // // Étant donné que le formulaire précédent a été encapsulé, nous ne pouvons pas simplement utiliser request.getParameter () pour obtenir les paramètres de formulaire String UNAME1 = Smart.GetRequest (). GetParameter ("uname1"); // surnom String upass1 = smart.getRequest (). GetParameter ("mot de passe1"); String Sex = Smart.getRequest (). GetParAmètre ("Sex"); String uname2 = smart.getRequest (). GetParameter ("uname2"); // username String e-mail = smart.getRequest (). GetParameter ("e-mail"); Printwriter out = réponse.getWriter (); // Voici les opérations de couche de persistance, omises. . . . . . . . . . } Protected vid doPost (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {doGet (request, réponse); }}La classe IP + Timestamp Iptimestamp utilisée ci-dessus renomance le fichier:
En téléchargeant des fichiers et d'autres opérations, afin d'empêcher les noms de fichiers en contradiction, nous effectuerons des opérations de renommée. Voici une dénomination qui implémente les horodatages IP +:
Je viens de télécharger le code, il n'y a rien à dire, l'implémentation est assez simple, mais pratique
package com.xidian.bbs.util; import java.text.simpledateFormat; import java.util.date; import java.util.random; public class iptiMestamp {private simpledateFormat sim = null; // utilisé pour obtenir du temps privé chaîne ip = null; public iptimestamp () {} public iptiMestamp (String ip) {this.ip = ip; } public String getIptimerand () {StringBuffer sbf = new StringBuffer (); if (this.ip! = null) {String a [] = this.ip.split ("//."); // diviser l'adresse IP en fonction du point, mais le point doit être échappé pour (int i = 0; i <a.length; i ++) {sbf.append (this.addzero (a [i], 3)); // Appel de la méthode de complément zéro, et chaque IP avec moins de trois chiffres est automatiquement complétée en trois chiffres} SBF.APPEND (this.gettimestamp ()); // utilise ceci pour appeler la méthode externe aléatoire aléatoire = new random (); // Création d'un nombre aléatoire pour (int i = 0; i <3; i ++) {// Création du nombre aléatoire à trois chiffres sbf.append (random.nextint (10)); // Chaque nombre aléatoire ne dépasse pas 10}} return sbf.toString (); } @SuppressWarnings ("inutilisé") String privé getDate () {// Concernant la date et l'heure ce.sim = new SimpledateFormat ("Yyyy-mm-dd hh: mm: ss.sss"); return this.sim.format (new Date ()); } chaîne privée gettimeStamp () {// return timestamp this.sim = new SimpledateFormat ("yyyymmddhhmmsssss"); return this.sim.format (new Date ()); } String privé addzero (String Str, int len) {// La méthode automatique de complément zéro, les paramètres sont la chaîne spécifiée et la longueur stringbuffer s = new StringBuffer (); S.APPEND (STR); while (s.Length () <len) {s.insert (0, "0"); // Compléter le fonctionnement de complément zéro à la position zéro} return s.toString (); } // Tester public static void main (String [] ary) {iptiMestamp iptiMestamp = new iptiMestamp ("172.168.3.222"); // Appel du constructeur avec paramètres System.out.println (iptimestamp.getIptimerand ()); }}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.