تحميل الملفات شائع جدًا في تطبيقات الويب. الآن سأقدم تحميل الملف بناءً على servlet. يمكن عرض تحميل الملف بناءً على Struts2:
رمز جانبي الصفحة:
<٪@ page language = "java" import = "java.util.*" pageencoding = "gbk" ٪> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> register </head> ON_SUBMIT () "Action =" REGISTERSEVLET "method =" post "enctype =" multipart /form-data "> <input type =" text "name =" uname1 "id =" password " /> <inputive type =" text "name =" uname2 "id =" uname2 " id = "password"/> <input type = "radio" value = "male" checked = "checked" name = "sex"/> male <input type = "radio" value = "female" name = "sex"/> female <type type = "text" value = "التسجيل الكامل"/> </form> </body> </html>
شيء واحد يجب ملاحظته هنا هو أن النموذج الذي تم تحميله بواسطة الملف يجب أن يكون enctype = "multipart/form-data" ؛ هنا نتفاعل مباشرة مع الخلفية دون تفاعل أياكس. إذا كنت بحاجة إلى استخدام Ajax ، يمكنك رؤية: http://www.cnblogs.com/shenliang123/category/372520.html
دعنا نستمر في النظر في تنفيذ الكود لـ Servlet:
package com.xidian.bbs.servlet ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد java.net.inetaddress ؛ استيراد java.sql.connection ؛ استيراد java.sql.resultset javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpletrequest ؛ استيراد javax.servlet.http.httpletrespons com.jspsmart.upload.*؛ استيراد com.xidian.bbs.bean.bean ؛ استيراد com.xidian.bbs.bean.registerbean ؛ استيراد com.xidian.bbs.util.dbaccess void dogge (request httpservletrequest ، httpservletresponse) يلقي servletexception ، ioException {response.setContentType ("text/html") ؛ استجابة. setcharacterencoding ("GBK") ؛ request.setcharacterencoding ("GBK") ؛ SmartUpload Smart = new SmartUpload () ؛ جرب {// pagecontext هو كائن مدمج من JSP. لا يمكن استخدامه مباشرة في servlet ، وهناك حاجة إلى بعض المعالجة. jspfactory _jspxfactory = null ؛ pagecontext pagecontext = null ؛ _jspxfactory = jspfactory.getDefaultFactory () ؛ pagecontext = _jspxfactory.getPageContext (هذا ، طلب ، استجابة ، "" ، صواب ، 8192 ، صحيح) ؛ Smart.Initialize (pagecontext) ؛ // تهيئة عملية التحميل smart.upload () ؛ iptimestamp its = new iptimestamp (inetaddress.getlocalhost (). // إذا كنت ترغب في تنفيذ تحميل الدُفعات للملفات ، فأنت بحاجة فقط إلى استخدام حلقة وتغيير 0 في getFile (0) إلى I إلى ext ext = smart.getfiles (). //system.out.println (اسم الملف الذي تم الحصول عليه هو "+filename) ؛ //this.getServletContext().getRealPath("/ ") للحصول على دليل tomcat ، يتم وضعه في مجلد التحميل. java.io.file.separator هي عملية آمنة // string RealPath = "" ؛ //this.getServletContext().getRealPath("/")+ smart.getfiles (). String allPath = "HeadUpload/"+filename+"" ؛ // // منذ أن تم تغليف نموذج النموذج السابق ، لا يمكننا ببساطة استخدام طلب. // لقب string upass1 = smart.getRequest (). getParameter ("password1") ؛ سلسلة الجنس = smart.getRequest (). getParameter ("الجنس") ؛ String uname2 = smart.getRequest (). getParameter ("uname2") ؛ // username string البريد الإلكتروني = smart.getRequest (). getParameter ("البريد الإلكتروني") ؛ printWriter out = response.getWriter () ؛ // فيما يلي عمليات طبقة الثبات ، تم حذفها. . . . . . . . . . } dopost void المحمي (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {doget (request ، response) ؛ }}فئة IP+Timestamp Iptimestamp المستخدمة أعلاه تُسمي الملف:
عند تحميل الملفات والعمليات الأخرى ، من أجل منع أسماء الملفات من التعارض ، سنقوم بإجراء عمليات إعادة تسمية. فيما يلي تسمية تنفذ IP+ Timestamps:
لقد قمت فقط بتحميل الكود ، لا يوجد شيء يمكن قوله ، فإن التنفيذ بسيط للغاية ، ولكنه عملي
package com.xidian.bbs.util ؛ import java.text.simpleDateFormat ؛ import java.util.date ؛ import java.util.random ؛ public class iptimestamp {private simpledateformat sim = null ؛ // تستخدم للحصول على وقت خاص على سلسلة IP = null ؛ public iptimestamp () {} public iptimestamp (string ip) {this.ip = ip ؛ } السلسلة العامة getIpTimerand () {StringBuffer SBF = new StringBuffer () ؛ if (this.ip! = null) {string a [] = this.ip.split ("//.") ؛ // قسّم عنوان IP وفقًا للنقطة ، ولكن يجب الهروب من النقطة (int i = 0 ؛ i <a.length ؛ i ++) {sbf.append (this.addzero (a [i] ، 3)) ؛ // استدعاء طريقة اكتمال الصفر ، ويتم تكمل كل IP مع أقل من ثلاثة أرقام تلقائيًا إلى ثلاثة أرقام} sbf.append (this.getTimestamp ()) ؛ // استخدم هذا لاستدعاء الطريقة الخارجية عشوائية = new Random () ؛ // إنشاء رقم عشوائي لـ (int i = 0 ؛ i <3 ؛ i ++) {// إنشاء رقم عشوائي من ثلاثة أرقام sbf.append (random.nextint (10)) ؛ // كل رقم عشوائي لا يتجاوز 10}} return sbf.toString () ؛ } suppresswarnings ("غير مستخدمة") سلسلة خاصة getDate () {// بخصوص التاريخ والوقت this.sim = new SimplEdateFormat ("Yyyy-MM-DD HH: MM: SS.SSS") ؛ إرجاع this.sim.format (تاريخ جديد ()) ؛ } سلسلة خاصة getTimEstamp () {// return timestamp this.sim = new SimplEdateFormat ("YyyyMmdDHHMMSSSSSSSSSSSSSSSSSSS") ؛ إرجاع this.sim.format (تاريخ جديد ()) ؛ } سلسلة private addzero (string str ، int len) {// طريقة اكتمال الصفر التلقائي ، فإن المعلمات هي السلسلة المحددة والطول STRINGBUFFER S = جديد StringBuffer () ؛ S.Append (Str) ؛ بينما (s.length () <len) {s.insert (0 ، "0") ؛ // إكمال عملية مكتملة صفرية في موضع الصفر} إرجاع S.ToString () ؛ }. // استدعاء المُنشئ مع المعلمات system.out.println (iptimestamp.getiptimerand ()) ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.