Das Datei -Upload ist in Webanwendungen sehr häufig. Jetzt werde ich das Datei -Upload basierend auf Servlet vorstellen. Das Datei -Hochladen basierend auf Struts2 kann angezeigt werden:
Seitenseitencode:
<%@ page Language = "java" import = "java.util. on_submit()" action="RegisterServlet" method="post" enctype="multipart/form-data"> <input type="text" name="uname1" id="password" /> <input type="text" name="uname2" id="uname2"/> <input type="password" name="password1" id="password" /> <input type="password" name="password2" id="password"/> <input type="radio" value="male" checked="checked" name="sex"/> Male<input type="radio" value="female" name="sex"/> Female<input type="text" name="email" value="" id="login" /> <br/><br/> <input type="file" name="file1" id="file"/> <input type="submit" name="submit" value = "Vollständige Registrierung"/> </form> </body> </html>
Eine Sache, die hier zu beachten ist, ist, dass das von der Datei hochgeladene Formularformular eng type = "Multipart/Form-Data" sein muss. Hier interagieren wir direkt mit dem Hintergrund ohne Ajax -Interaktion. Wenn Sie AJAX verwenden müssen, können Sie: http://www.cnblogs.com/shenliang123/category/372520.html sehen
Sehen wir uns weiterhin die Code -Implementierung von Servlet an:
Paket com.xidian.bbs.servlet; import java.io.ioxception; import java.io.printwriter; import Java.net.inetaddress; import Java.sql.connection; import Java.sql.resultset; Import Java.SQL.Statement; Javax.Servlet.Servlet.Servlet. javax.servlet.http.httpServlet; import javax.servlet.http.httpsertRequest; import Javax.servlet.http.httpServletResponse; import Javax.Servlet.jsp.jspactory; com.jspsmart.Upload. DOGGE (httpServletRequest Request, httpServletResponse -Antwort) löscht ServletException, IOException {response.setContentType ("text/html"); response.setcharactercoding ("gbk"); request.setcharactercoding ("gbk"); SmartUpload Smart = new SmartUpload (); Versuchen Sie {// pageContext ist ein integriertes Objekt von JSP. Es kann nicht direkt im Servlet verwendet werden, und es ist eine gewisse Verarbeitung erforderlich. JSPFACTORY _JSPXFACTORY = NULL; PageContext pageContext = null; _jspxfactory = jspfactory.getDefaultFactory (); pageContext = _jspxfactory.getPageContext (this, Request, Antwort, "", true, 8192, true); Smart.initialize (pageContext); // Initialisieren Sie die Upload -Operation smart.Upload (); Iptimestamp its = new iptimestamp (inetaddress.getLocalHost (). Gethostaddress ()); // Request.getremoteaddr () erhält die IP -Adresse des Benutzers // system.out.println ("Das IP wird erhalten"+Inetaddress.getLocalhost (). GethostDress (); // Wenn Sie das Batch -Upload von Dateien implementieren möchten, müssen Sie nur eine für die Schleife verwenden und 0 in GetFile (0) zu i bis String ext = smart.getFiles () ändern. GetFile (0) .GetFileext (); // Dies ist die Erweiterung, um die Datei zu erhalten, GetFile (0) ist die einzige Upload -Datei filename = itiptimerand (). //System.out.println("Die Dateiname erhalten ist "+Dateiname); //this.getServletContext().getrealpath("/ ") Um das Tomcat -Verzeichnis zu erhalten, wird es im Upload -Ordner platziert. java.io.file.separator ist eine sichere Operation // String RealPath = ""; //this.getServletContext().getrealPath("/")+ Smart.getFiles (). getFile (0) .Saveas ("/headUpload"+java.io.file.separator+Filename); String realPath = "headUpload/"+Dateiname+""; // // Da das vorherige Formularformular eingekapselt wurde, können wir Request.getParameter () nicht einfach verwenden, um die Formularparameter String uname1 = smart.getRequest () zu erhalten. GetParameter ("Uname1"); // Spitzname String upass1 = smart.getRequest (). GetParameter ("password1"); String sex = smart.getRequest (). GetParameter ("Sex"); String uname2 = smart.getRequest (). GetParameter ("uname2"); // Benutzername String mail = smart.getRequest (). GetParameter ("E -Mail"); Printwriter out = response.getWriter (); // Folgende Operationen der Persistenzschicht sind weggelassen. . . . . . . . . . } Protected void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, ioException {dodget (request, response); }}Die oben verwendete IP+Timestamp -Klasse IPTIMESTAMP benennt die Datei um:
Um Dateien und andere Vorgänge hochzuladen, werden wir um Umbenennungsvorgänge auszuführen, um Dateinamen widersprüchlich zu verhindern. Hier ist eine Benennung, die IP+ -Timestempel implementiert:
Ich habe gerade den Code hochgeladen, es gibt nichts zu sagen, die Implementierung ist recht einfach, aber praktisch
Paket com.xidian.bbs.util; import Java.Text.SimpledateFormat; Import Java.util.date; import Java.util.random; öffentliche Klasse IPTIMESTAMP {private SimpleDateFormat Sim = null; // verwendet, um Zeit private String 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 ("//."); // Die IP -Adresse nach dem Punkt teilen, aber der Punkt muss entkommen für (int i = 0; i <a.länge; i ++) {sbf.Append (this.addzero (a [i], 3)); // Aufrufen der Null-Komplement-Methode und jede IP mit weniger als drei Ziffern wird automatisch auf drei Ziffern ergänzt} SBF.Append (this.gettimestamp ()); // Verwenden Sie dies, um die externe Methode Random Random = New Random () aufzurufen. // Erstellen einer Zufallszahl für (int i = 0; i <3; i ++) {// Erstellen von dreistelliger Zufallszahl sbf.append (random.Nextint (10)); // Jede Zufallszahl überschreitet nicht 10}} return sbf.toString (); } @Suppresswarnings ("unbenutzt") private String getDate () {// bezüglich Datum und Uhrzeit this.sim = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss.sss"); return this.sim.format (neues Datum ()); } private String GetTimestAMP () {// TimeStamp thatestamp zurückgeben return this.sim.format (neues Datum ()); } private String addZero (String str, int len) {// Die automatische Methode null-complement ist die angegebene Zeichenfolge und Länge StringBuffer s = new StringBuffer (); S.Append (str); while (s.Length () <len) {S.Insert (0, "0"); // Abschluss der Null-Complement-Operation an der Nullposition} return s.ToString (); } // public static void main (String [] ary) {iptimestamp iptimestamp = new iptimestamp ("172.168.3.222"); // den Konstruktor mit Parameters System.out.println (iptimestamp.getiptimerand ()) aufrufen; }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.