كتابة إصدار Java من ألبوم Cloud Simple ، الوظائف التي تم تنفيذها هي:
يمكن للمستخدمين تحميل واحدة إلى ملفات متعددة في وقت واحد.
يمكن للمستخدمين تنزيل الصور التي تم تحميلها من قبل الآخرين.
يمكن للمستخدمين مشاهدة صور أي شخص آخر.
يمكن للمستخدمين فقط حذف الصور التي تم تحميلها من خلال عنوان IP الخاص بهم.
التقنيات المستخدمة:
تحميل الملف وتنزيله ، وضع التصميم ، DOM4J ، XPATH ، إلخ.
دعونا نلقي نظرة على الصفحتين التاليتين:
رمز المصدر:
web.xml:
<؟ XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> display-name> <Srevlet-Class> cn.hncu.servlets.uploadservlet </servlet-class> </servlet> <stervlet> <stervlet-name> cloudphotoservlet </servlet-name> <cervlet-class> cn.hncu.servlets <Srevlet-Class> cn.hncu.servlets.downservlet </servlet-class> </servlet> <vervlet> <Sradlet-Name> delservlet </servlet-name> <Srevlet-Class> <Url-pattern>/upload </url-pattern> </recreslet-mapping> <Servlet-mapping> <radlet-name> cloudphotoservlet </servlet-name> <Url-pattern>/cloudphoto </url-patern> </servlet mapping> <Url-pattern>/servlet/downservlet </url-pattern> </servlet-mapping> <Sradlet-mapping> <Sradlet-Name> delservlet </servlet-name> <Url-pattern>/servlet/delservlet </url-pattern> </servlet-mapping> </swith-file-list> </web-app>
index.jsp:
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> = input.parentElement.ParentElement.ParentElement ؛ // table.Nodename tbody table.removechild (input.parentElement.ParentElement) ؛ } var t = 1 ؛ وظيفة addFile (input) {tr = input.parentElement.ParentElement ؛ //alert(tr.nodename) ؛ var str = "<td> حدد ملف: </td>"+ "<td> <input type = 'file' name = 'file"+ t+ "'> </td>"+ "<td> وصف الملف: </td>"+ "<td> <td type = 'text' name = 'text"+ t+ "' '</td> onClick = 'delfile (this)'> </td> "؛ tr.insertadjacenthtml ("exerbegin" ، str) ؛ } وظيفة move () {window.location.href = "/myphoto/cloudphoto" ؛ } </script> <type type = "text/css"> #font {color: red ؛ } </style> </head> <body> <h1> <font id = "font"> تحميل الألبوم: </font> </h1> <form action = "/myphoto/upload" method = "post" end "=" file> " <td> وصف الملف: </td> <td> <type type = "text" name = "text1"> </td> <td> <type type = "button" value = "delete file" onClick = "delfile (this)> </td> </td> <tr> type = "button" value = "add file" onClick = "addFile (this)"> </td> </tr> </table> </pump> <form action = "/myphoto/cloudphoto" method = "post" enctype = "multipart/form-data"> <tr> <td colspan = 5> OnClick = "Move ()"> </td> </tr> </table> </pump> </body> </html>photo.xml:
<؟
myutils.java:
package cn.hncu.utils ؛ import java.text.simpleDateFormat ؛ import java.util.date ؛ import java.util.uuid ؛ public class myutils { / ** * regurn get uuid * / public static getuuid () {return uuid.randomuid () } / ** * param uuid * return احصل على المسار المكسور من خلال uuid * / سلسلة ثابتة عامة getDir (سلسلة uuid) {string dir1 = integer.toHexString (uuid.hashcode () & 0xf) ؛ string dir2 = integer.toHexString ((uuid.hashCode () & 0xf0) >> 4) ؛ إرجاع "/"+dir1+"/"+dir2 ؛ } // تنسيق وقت التاريخ الخاص spistatorformat sdf = new SimpleDateFormat ("Yyyyy Year Mm Month Date HH: MM: SS") ؛ / *** regurn يعيد التاريخ والوقت عند تحميل*/ سلسلة ثابتة getCurrentDateTime () {return sdf.format (new date ()) ؛ }}dom4jfactory.java:
package cn.hncu.utils ؛ import java.io.fileinputStream ؛ import java.io.filenotfoundException ؛ import java.io.fileOutputStream ؛ import java.io.ioException ؛ import java.io.unsupportedingexception ؛ import org.document ؛ importexceptixtexceptix. org.dom4j.Element ؛ import org.dom4j.node ؛ import org.dom4j.io.saxReader ؛ import org.dom4j.io.xmlWriter ؛ public class dom4jfactory {private static dOM = null ؛ مسار السلسلة الثابتة الخاصة ؛ // كتلة ثابتة! سوف يركض مرة واحدة فقط! الميزة هي أنه عندما يتم تحميل الفئة ، يتم تنفيذ {try {saxreader sax = new saxreader () ؛ // نظرًا لأن مواردنا قد تم نشرها من Myelipse إلى خادم Tomcat ، فهي تختلف عن مشروع Java الأصلي. // استخدم الفئة الحالية للعثور على محمل فئة ، ثم الحصول على مسار المورد من خلال تحميل الفئة. path = dom4jfactory.class.getClassLoader (). getResource ("photo.xml"). getPath () ؛ // getClassloader () إرجاع: تحميل تحميل الفئة من الفئة أو الواجهة الممثلة في هذا الكائن // عنوان URL العام getResource (اسم السلسلة) إرجاع: قراءة كائن عنوان URL للمورد ؛ إذا كان لا يمكن العثور على المورد ، أو لم يكن لدى المتصل إذنًا كافيًا للحصول على المورد ، فالرئة NULL. // تبحث هذه الطريقة أولاً عن محمل فئة الوالد الخاصة بالمورد ؛ إذا كان محمل الفئة الأصل فارغًا ، فإن مسار البحث هو مسار لوادر الفئة المدمجة للجهاز الظاهري. // السلسلة العامة getPath () تحصل على جزء المسار من عنوان URL هذا. system.out.println (path) ؛ DOM = SAX.READ (FileInputStream جديد) ؛ } catch (fileNotfoundException e) {رمي new runTimeException (e) ؛ } catch (documentException e) {refl new RunTimeException (e) ؛ }} / ** * RETURN احصل على مستند الألبوم * / المستند الثابت العام getDocument () {return dom ؛ } / ** * حفظ photo.xml وحفظه إلى local * / public static boolean save () {try {xmlwriter w = new xmlwriter (fileOutputStream (path)) ؛ W.Write (DOM) ؛ W.Close () ؛ العودة صحيح. } catch (UnsupportedEncodingException e) {return false ؛ } catch (fileNotfoundException e) {return false ؛ } catch (ioException e) {return false ؛ }} public static boolean del (string uuid) {node node = dom.selectsinglenode ("[@uuid = '"+uuid+"']") ؛ if (node == null) {return false ؛ } node.getParent (). إزالة (العقدة) ؛ العودة صحيح. } / *** test* param args* / public static void main (string [] args) {system.out.println (getDocument ()) ؛ }}photomodel.java - كائن القيمة
حزمة cn.hncu.domain ؛/**** تغليف كائن القيمة* Author Chen Haoxiang* 2016-7-24*/public class photomodel {private string uuid ؛ // uuid private string realname = " File Private String IP ؛ // سلسلة IP الخاصة بـ Uploader الخاصة بـ DESC ؛ // وصف الملف الوصف public getUuid () {return uuid ؛ } public void setuuid (string uuid) {this.uuid = uuid ؛ } السلسلة العامة getRealName () {return realName ؛ } public void setRealName (string realName) {this.realName = RealName ؛ } السلسلة العامة getext () {return ext ؛ } public void setext (String ext) {this.ext = ext ؛ } السلسلة العامة getDir () {return dir ؛ } public void setDir (string dir) {this.dir = dir ؛ } السلسلة العامة getDateTime () {return dateTime ؛ } public void setDateTime (String dateTime) {this.dateTime = dateTime ؛ } السلسلة العامة getip () {return ip ؛ } public void setip (string ip) {this.ip = ip ؛ } السلسلة العامة getDesc () {return desc ؛ } public void setDesc (string desc) {this.desc = desc ؛ } Override public string toString () {return "photomodel [uuid =" + uuid + "، realName =" + RealName + "، ext =" + ext + "، dir =" + dir + "، dateTime =" + dateTime + "، ip =" + ip + "، desc =" + desc + "] ؛ }}photodao.java:
package cn.hncu.photodao / *** regurn إرجاع جميع معلومات الصورة*/ قائمة عامة <Photomodel> getAll () ؛ / *** param uuid* regurn ابحث عن كائن القيمة المغطاة من خلال uuid*/ public photomodel getinglebyuuid (سلسلة uuid) ؛ / ** * param uuid * return حذف معلومات الصورة في الصور. / ** * param dir * return حذف معلومات الصورة في قرص الخادم من خلال المسار */ boolean public deletefile (string pathfilename) ؛}
Photoserimpl.java:
package cn.hncu.photodao.impl ؛ استيراد java.io.file ؛ استيراد java.util.arraylist ؛ استيراد java.util.iterator ؛ استيراد java.util.list ؛ استيراد org.dom4j.document ؛ استيراد org.dom4j.element ؛ import org.dom4j.node ؛ cn.hncu.photodao.dao.photodao ؛ استيراد cn.hncu.utils.dom4jfactory ؛ public photoserimpl تنفذ photodao {override public boolean save (photomodel photo) العنصر جذر = dom.getRootElement () ؛ // إضافة عنصر السمة p = root.addelement ("photo") ؛ p.addattribute ("uuid" ، photo.getuuid ()) ؛ P.Addattribute ("realName" ، photo.getRealName ()) ؛ P.AdDattribute ("DateTime" ، photo.getDateTime ()) ؛ P.AdDattribute ("IP" ، photo.getip ()) ؛ P.Addattribute ("Ext" ، photo.getext ()) ؛ P.Addattribute ("dir" ، photo.getdir ()) ؛ P.Addattribute ("desc" ، photo.getDesc ()) ؛ إرجاع dom4jfactory.save () ؛ } Override Public List <Photomodel> getAll () {list <LustomOdel> list = new ArrayList <Photomodel> () ؛ dOMP = DOM4JFACTORY.GETDOCUMITY () ؛ العنصر جذر = dom.getRootElement () ؛ iterator <element> it = root.elementIrator ("photo") ؛ // احصل على iterator لعنصر الصورة من خلال DOM4J ، ويمكنك أيضًا العثور على جميع الصور من خلال XPATH // LIST <Node> قوائم = dom.selectnodes ("// photo [uuid]") ؛ // iterator <Node> it = lists.iterator () ؛ بينما (it.hasnext ()) {element e = it.next () ؛ photomodel photo = new photomodel () ؛ photo.setuuid (e.attributeValue ("uuid")) ؛ photo.setRealName (e.attributeValue ("realName")) ؛ photo.setDateTime (e.attributeValue ("dateTime")) ؛ photo.setext (e.attributeValue ("ext")) ؛ photo.setip (e.attributeValue ("ip")) ؛ photo.setdir (e.attributeValue ("dir")) ؛ photo.setDesc (e.attributeValue ("desc")) ؛ list.add (photo) ؛ } قائمة الإرجاع ؛ } Override Public Photomodel getinglebyuuid (String uuid) {list <Photomodel> photos = getall () ؛ لـ (photomodel photo: photos) {if (photo.getuuid (). equals (uuid)) {return photo ؛ }} الإرجاع null ؛ } Override public boolean deletexml (string uuid) {dump dom = dom4jfactory.getDocument () ؛ العنصر e = (element) dom.selectsinglenode ("// photo [uuid = '"+uuid.trim ()+"']") ؛ إرجاع E.GetParent (). إزالة (E) ؛ } Override public boolean deletefile (String pathfilename) {try {file file = file new (pathfilename) ؛ if (file.exists ()) {file.delete () ؛ } إعادة صواب ؛ } catch (استثناء e) {return false ؛ }}}photodaofactory.java:
package cn.hncu.photodao.factory ؛ استيراد cn.hncu.photodao.impl.photoSerimpl ؛/*** طريقة المصنع* Auuthor Chen Haoxiang* 2016-7-24*/public photodaofactory {public static photoppl getphotodao () }}ToploadServlet.java:
package cn.hncu.servlets ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد java.util.list ؛ eSport javax.servlet.servletexception ؛ javax.servlet.http.httpservletresponse ؛ import org.apache.commons.fileupload.fileitem ؛ import org.apache.commons.fileupload.fileuploadexception ؛ import org.commons.fileud org.apache.commons.fileupload.servlet.servletfileupload ؛ استيراد cn.hncu.domain.photomodel ؛ استيراد cn.hncu.photodao.dao.photodao Cn.Hncu.Utils.MyUtils ؛ uploadservlet من الطبقة العامة يمتد httpservlet {public void dogge (httpservletrequest request ، httpservletresponse) يلقي servleTexception ، ioException {response.setContentType ("text/html ؛ Response.getWriter (). print ("<h1> آسف ، هذه الصفحة لا تدعم الحصول على الوصول !!! </h1>") ؛ desponse.getWriter (). print ("<a href = 'javaScript: History.go (-1)'> العودة إلى الصفحة السابقة </a>") ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {reponse.setContentType ("text/html ؛ charset = utf-8") ؛ printWriter النهائي out = response.getWriter () ؛ // STRIMPLISTION STRIMMENT FORMENCED-NON-NON-MULTIPART // استخدم أداة التحميل Boolean Boo = servletfileupload.ismultipartContent (request) ؛ if (! boo) {out.print ("<h1> لا يدعم طريقة تقديم النماذج العادية! </h1>") ؛ يعود؛ } ملف الملف = ملف جديد ("d:/photoCache") ؛ if (! file.exists ()) {file.mkdir () ؛ } diskfileitemfactory fifactory = new diskfileItemFactory (1024*10 ، file) ؛ servletfileupload تحميل = جديد servletfileupload (Fifactory) ؛ Upload.SetHeaderenCoding ("UTF-8") ؛ // تعيين اسم الملف ترميز السلسلة = getServletContext (). getRealPath ("/photos") ؛ fileItem fi = null ؛ حاول {list <IptiTem> list = upload.parserequest (request) ؛ Photomodel Photo = جديد photomodel () ؛ // تغليف البيانات --- 7 خصائص مطلوبة photo.setRealName ("") ؛ int cont = 0 ؛ لـ (fileItem f: list) {if (cont! = 0 && cont ٪ 2 == 0 &&! photo if (fi.isformfield ()) {// normal form component // get file description string desc = fi.getString ("utf-8") ؛ photo.setdesc (desc) ؛ //#1} آخر {// anti-black 3-if ، لم يتم تحديد الملف في مكون الملف if (fi.getSize () == 0) {photo.setRealName ("") ؛ تابع ++ ؛ يكمل؛ } string filename = fi.getName () ؛ filename = filename.subString (filename.lastindexof ("//")+1) ؛ // اسم ملف حقيقي photo.setRealName (filename) ؛ //#2 string ext = fileName.subString (filename.lastindexof (".") photo.setDateTime (myutils.getCurrentDateTime ()) ؛ //#4 photo.setip (request.getRemoteaddr ()) ؛ //#5 string uuid = myutils.getuuid () ؛ photo.setuuid (uuid) ؛ //#6 photo.setdir (myutils.getdir (uuid)) ؛ //#7 // تعطل ملف الدليل dfile = ملف جديد (path+photo.getdir ()) ؛ if (! dfile.exists ()) {dfile.mkdir () ؛ } fi.write (ملف جديد (path+photo.getDir ()+"/"+photo.getuuid ()+photo.getext ())) ؛ } cont ++ ؛ if (cont ٪ 2 == 0 &&! photo.getRealName (). يساوي ("")) {photodao dao = photodaofactory.getPhotodao () ؛ boo = dao.save (photo) ؛ // حفظ إلى القرص - الطريقة 2: fileUtils.CopyInputStreamTofile (في ، ملف جديد (Filename2)) ؛ // ※ 2 ※ تخزين ملف الصورة إلى الخادم Photo Disk Hand Disk = New Photomodel () ؛ // RECAPSULACE}}} catch (fileuploadexception E) } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {if (fi! = null) {fi.delete () ؛ } if (dom4jfactory.save ()) {out.print ("<h1> تم تحميله بنجاح! </h1>") ؛ Out.print ("<a href = 'javaScript: History.go (-1)'> العودة إلى الصفحة السابقة </a>") ؛ } آخر {out.print ("<h1> فشل التحميل! </h1>") ؛ Out.print ("<a href = 'javaScript: History.go (-1)'> العودة إلى الصفحة السابقة </a>") ؛ }}}}عرض جميع الملفات -cloudphotoservlet.java
package cn.hncu.servlets ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد java.util.list ؛ استيراد javax.servlet.servletexception ؛ import javax.servlet.http.httpservlet ؛ javax.servlet.http.httpservletresponse ؛ استيراد cn.hncu.domain.photomodel ؛ استيراد cn.hncu.photodao.dao.photodao ؛ DOGET (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servleTexception ، ioException {string pwd = (string) request.getParameter ("pwd") ؛ if ("chx" .equals (pwd)) {dopost (request ، response) ؛ } آخر {desponse.setContentType ("text/html ؛ charset = utf-8") ؛ Response.getWriter (). print ("<h1> آسف ، ليس لديك إذن للوصول !!! </h1>") ؛ }} public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {response.setContentType ("text/html ؛ charset = utf-8") ؛ printWriter out = response.getWriter () ؛ out.println ("<! doctype html public/"-// w3c // dtd html 4.01 Transitional // en/">") ؛ out.println ("<html>") ؛ Out.println ("<head> <title> Cloud Album </title> </head>") ؛ out.println ("<body>") ؛ out.println ("<table border = '1px ؛ double ؛#ff0000'>") ؛ out.println ("<tr>") ؛ out.println ("<tr>") ؛ Out.println ("<td> اسم الملف </td>") ؛ out.println ("<td> time time") ؛ Out.println ("<td> file </td>") ؛ Out.println ("<td> وصف الملف </td>") ؛ Out.println ("<td> العملية </td>") ؛ out.println ("</tr>") ؛ String tdwh = "style = 'width: 200px ؛ الارتفاع: 200px ؛'" ؛ // إظهار جميع الصور photodao dao = photodaofactory.getPhotodao () ؛ قائمة <Photomodel> الصور = dao.getall () ؛ لـ (photomodel photo: photos) {String filename = photo.getRealName () ؛ وقت السلسلة = photo.getDateTime () ؛ // إخراج صورة سلسلة path = request.getContextPath () + "/photos/" + photo.getDir () + "/" + photo.getuuid () + photo.getext () ؛ // system.out.println (path) ؛ //myphoto/photos//7/c/a1237a48a6a451cb222fa78b15bafcea.jpg string img = "<a href = '" + path + "'> <img src = '" + path + "'/> </a>" ؛ سلسلة desc = photo.getDesc () ؛ String delstr = "<a href = '/myphoto/servlet/delservlet؟ uuid =" + photo.getuuid () + "'> delete </a>" ؛ string downstr = "<a href = '/myphoto/servlet/downservlet؟ out.println ("<td" + tdwh + ">" + filename + "</td>") ؛ out.println ("<td" + tdwh + ">" + time + "</td>") ؛ out.println ("<td" + tdwh + ">" + img + "</td>") ؛ out.println ("<td" + tdwh + ">" + desc + "</td>") ؛ Out.println ("<td" + tdwh + ">" + delstr + "" + downstr + "</td>") ؛ out.println ("</tr>") ؛ } out.println ("<tr>") ؛ out.println ("</tr>") ؛ out.println ("</table>") ؛ Out.println ("</body>") ؛ out.println ("</html>") ؛ out.flush () ؛ out.close () ؛ }}حذف الملف - delservlet.java
package cn.hncu.servlets ؛ import java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservlest ؛ javax.servlet.http.httpservletresponse ؛ استيراد cn.hncu.domain.photomodel ؛ استيراد cn.hncu.photodao.dao.photodao photodaofactory.getPhotodao () ؛ DOGED VOID Public Void (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {dopost (request ، response) ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {string uuid = request.getParameter ("uuid") ؛ سلسلة IP = request.getRemoteadDr () ؛ استجابة. printWriter out = response.getWriter () ؛ photomodel photo = dao.getsinglebyuuid (uuid) ؛ if (photo! = null) {if (! photo.getip (). equals (ip)) {out.print ("<h1> ليس لديك إذن لحذف هذا الملف!!! </h1>") ؛ Out.print ("<a href = 'javaScript: History.go (-1)'> العودة إلى الصفحة السابقة </a>") ؛ يعود ؛ } // 1. حذف المعلومات في قاعدة البيانات Boolean Boo = dao.deletexml (UUID) ؛ if (boo) {String filename = "photos/"+photo.getDir ()+"/"+photo.getuuid ()+photo.getext () ؛ String pathfilename = getServletContext (). getRealPath (اسم الملف) ؛ if (dao.deletefile (pathfilename)) {// إعادة توجيه إلى صفحة الألبوم response.sendredirect ("/myphoto/cloudphoto؟ pwd = chx") ؛ } آخر {out.print ("<h1> لا يمكن حذفه من الخادم ، يتم احتلال الملف !!! </h1>") ؛ Out.print ("<a href = 'javaScript: History.go (-1)'> العودة إلى الصفحة السابقة </a>") ؛ }} else {out.print ("<h1> لم يعد الملف موجودًا !!! </h1>") ؛ Out.print ("<a href = 'javaScript: History.go (-1)'> العودة إلى الصفحة السابقة </a>") ؛ }}}}تنزيل ملف -downservlet.java
package cn.hncu.servlets ؛ import java.io.fileinputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.io.outputstream ؛ import java.net.urlencoder ؛ import javax.servlet.servletexpice javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد cn.hncu.domain.photomodel ؛ يمتد DownServlet httpservlet {private photodao dao = photodaofactory.getPhotodao () ؛ DOGED VOID Public Void (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {dopost (request ، response) ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {string uuid = request.getParameter ("uuid") ؛ system.out.println (uuid) ؛ photomodel photo = dao.getsinglebyuuid (uuid) ؛ system.out.println (photo) ؛ إذا كان (photo! = null) {// قم بتعيين مستقبل رأس الاستجابة--عندما يرى المتصفح رأس الاستجابة هذا ، سيفتح برنامج التنزيل الذي يعتقد أنه // (إذا تم التعرف على الرعد ، فسيتم فتح الرعد تلقائيًا ، إذا لم يكن الأمر كذلك ، "ملف حفظ" كمربع حوار سيتم فتحه). سلسلة realName = photo.getRealName () ؛ string Agent = request.getheader ("عامل المستخدم") ؛ System.out.println (Agent) ؛ if (agent.indexof ("mozilla")! =-1) {// firefox response.setheader ("content-disposition" ، "filename ="+ new string (RealName.getBytes ("GB2312") ، "ISO-8859-1") ؛ } آخر {// حل مشكلة الصينية المشوهة (فقط استخدم الجملة التالية لترميز اسم الملف) RealName = urlencoder.encode (realName ، "UTF-8") ؛ // استخدم آلية الترميز المحددة لتحويل السلسلة إلى التطبيق/x-www-form-porlencoded. استجابة. // ملاحظة: "cttachment ؛" لا يمكن أن يكون مفقودًا ، وإلا فإن المستعرض سيتم فتحه مباشرة في نافذة جديدة} سلسلة fileName = "صور/"+photo.getDir ()+"/"+photo.getuuid ()+photo.getext () ؛ String pathfilename = getServletContext (). getRealPath (اسم الملف) ؛ inputStream في = new FileInputStream (pathfilename) ؛ outputStream Out = response.getOutputStream () ؛ بايت بوف [] = بايت جديد [2048] ؛ int len = 0 ؛ بينما ((len = in.read (buf))! =-1) {out.write (buf ، 0 ، len) ؛ } out.close () ؛ in.close () ؛ } آخر {desponse.setContentType ("text/html ؛ charset = utf-8") ؛ Response.getWriter (). println ("<h1> تم حذف هذا الملف </h1>") ؛ }}}نتائج التوضيح
لن أظهر هذا ، هناك صور أمامه ، وقد أعطيت جميع رموز المصدر. إذا كنت مهتمًا ، فيمكنك إجراء بعض التحسينات بنفسك.
في الواقع ، يمكن أن يقوم هذا أيضًا بتحميل أي نوع آخر من الملفات ، لأنه ليس لدينا اسم لاحقة وقائية ، ونحن نستخدم تدفق الأحرف لنقله ، ولن يتم تشويهه (يمكن معالجته كقرص سحابي ~~)! !
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.