قم بتحرير الصفحة upload.html من ملف التحميل
ملاحظة: لا يمكن استخدام Get عند تحميل Post (لا يمكن الحصول على الملفات)
يجب ضبط خاصية النموذج enctype على multipart/form-data. (يشير إلى أن البيانات المقدمة هي ملف ثنائي)
تحميل. html
<! doctype html> <html> <head> <meta charset = "utf-8"> <title> تحميل الملف </title> </head> <body> <form action = "uploadphotoservlet" method = "post" enctype = "multipart/form-data" اسم الحرف: name = "filepath"/> <br> <input type = "submit" value = "upload"> </pond> </body> </html>
uploadptoTOtoServlet File تحميل فئة-تطوير وظيفة التحميل
ضع حزم اثنين من commons-IO-1.4.jar و commons-filepload-1.2.2.jar في دليل الويب/lib.
استيراد java.io.file ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.io.printwriter ؛ javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpletrequest org.apache.commons.fileupload.fileuploadexception ؛ import org.apache.commons.fileupload.disk.diskfileItemFactory ؛ import org.apache.commons.fileupload.servlet.servletfileupload ؛/** */@webservlet ("/uploadphotoservlet") تمتد فئة plactploadphotoServlet على httpservlet {private static final long serialversionuid = 1L ؛ / ** * seee httpservlet#httpservlet () */ public exploadphotoservlet () {super () ؛ // TODO TOD AUTO CONTRUCTOR Stub}/** * see httpservlet#doget (طلب httpservletrequest ، استجابة httpservletresponse) */محمية void doget (httpletRequest request ، httpservletponsponse response) throws servlexception ، ioexception {// to-generated acto too too too too too too too too todo. Response.getWriter (). إلحاق ("يتم تقديمه في:") .append (request.getContextPath ()) ؛ اسم ملف السلسلة = فارغ ؛ DiskfileItemFactory Factory = New DiskfileItemFactory () ؛ // Disk File Entry Factory ServletFilePload Upload = New ServletFileUpload (Factory) ؛ // مسؤولة عن معالجة بيانات الملف التي تم تحميلها وتغليف كل عنصر إدخال في النموذج في كائن FileItem // قم بتعيين حجم الملف الذي تم تحميله على 10M Factory.SetSizeThReshold (2*1024*1024) ؛ عناصر قائمة = فارغة ؛ جرب {// parse parses heads = upload.parserequest (request) ؛ // احصل على كائن قائمة يحفظ جميع المحتوى الذي تم تحميله} catch (FileUploAdexception e) {// todo catch catch e.printstacktrace () ؛ } iterator iter = items.iterator () ؛ // التكرار عبر بيانات الملف التي تم تحميلها بينما (iter.hasnext ()) {fileItem item = (fileItem) iter.next () ؛ if (! item.isformfield ()) {// إذا لم يتم تحميله // قم بإنشاء ملف Avatar استنادًا إلى اسم ملف timestamp = system.currentTimeMillis ()+". jpg" ؛ // الحصول على مجلد التحميل من خلال getRealPath. إذا كان المشروع موجودًا ، فلن يكون موجودًا ضمن المشروع الحالي ، قم بإنشاء مجلد Project // Picture Folder String photofolder = request.getServletContext (). getRealPath ("تحميل") ؛ ملف f = ملف جديد (photofolder ، اسم الملف) ؛ F.GetParentFile (). Mkdirs () ؛ // إذا لم يكن المجلد الأصل موجودًا ، فسيتم إنشاءه تلقائيًا // الحصول على الملف الذي تم تحميله بواسطة المتصفح من خلال item.getInputStream () inputStream هو = item.getInputStream () ؛ // اقرأ الملف في // انسخ ملف fileOutputStream fos = جديد fileOutputStream (f) ؛ // show byte [] b = new byte [2*1024*1024] على الواجهة ؛ int len = 0 ؛ بينما ((len = is.read (b))! =-1) {fos.write (b ، 0 ، len) ؛ } fos.close () ؛ } آخر {system.out.println (item.getFieldName ()) ؛ // heroname string value = item.getString () ؛ value = new string (value.getBytes ("ISO-8859-1") ، "UTF-8") ؛ System.out.println (value) ؛ // mulberry}} String html = "<img width = '200' height = '150' src = 'apploaded/٪ s'/>" ؛ استجابة. printWriter pw = response.getWriter () ؛ pw.format (HTML ، اسم الملف) ؛ } / ** * see httpservlet#dopost (طلب httpservletrequest ، استجابة httpservletresponse) * / محمية void dopost (httpservletrequest request ، httpservletresponse response) يلقي servletexception ، ioexception {// إلى method method method (request ، refress) ؛ }}نتائج التشغيل:
لخص
ما سبق هو رمز التنفيذ لتحميل الملفات على الخادم وعرض الوظائف وفقًا لذلك. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!