تستخدم هذه المقالة أمثلة لتقديم كيفية استخدام المشاع fileupload.jar. Apache's Commons-filepload.jar لتسهيل وظيفة التحميل للملفات. المحتوى المحدد كما يلي
ضع Apache's Commons-filepload.jar ضمن شبكة الإنترنت/lib في التطبيق وهو جاهز للاستخدام. يوضح المثال التالي كيفية استخدام وظيفة تحميل الملف.
إصدار FileUpload المستخدم هو 1.2 والبيئة هي Eclipse3.3+myeclipse6.0. يعتمد FileUpload على المشاع IO ، لذلك قبل إدخال المشروع ، حدد حزمة JAR من المشاع IO (باستخدام Commons-IO-1.3.2JAR في هذه المقالة) ضمن الويب-Inf/LIB.
هذه المقالة هي مثال على ذلك مشروع يمكن تنزيله في المرفق في نهاية المقالة.
مثال 1
إن أبسط مثال هو تحليل الطلب من خلال فئة ServletFileUpload Static. ستقوم فئة المصنع FileItemFactory بمعالجة جميع الحقول في شكل فئة Mulipart ، وليس فقط حقول الملفات. GetName () يحصل على اسم الملف ، ويحصل getString () على محتوى بيانات النموذج ، ويمكن لـ ISFormField () تحديد ما إذا كان عنصر نموذج عادي.
demo1.html
<html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> <title> تحميل الملف </title> </head> <body> // يجب أن يكون بيانات نموذج متعددة. <form name = "myform" Action = "demo1.jsp" method = "post" env "envel =" multipart/form-data "> اسمك: <br> <input type =" text "name =" size "=" 15 " </form> </body> </html>
DEMO1.JSP
<٪@ page language = "java" contentType = "text/html ؛ charset = gb18030" pageencoding = "gb18030" ٪> <٪@ page import = "org.apache.commons.fileupload. import = "org.apache.commons.fileupload.disk. طلب الإدخال هو بيانات النماذج المتعددة. if (ismultipart == true) {fileItemFactory Factory = new DiskfileItemFactory () ؛ // إنشاء كائن diskfileItemFactory للطلب وتحليل الطلب من خلاله. بعد تنفيذ التحليل ، يتم حفظ جميع عناصر النماذج في قائمة. servletfileupload تحميل = جديد servletfileupload (المصنع) ؛ قائمة <FileItem> عناصر = Upload.ParsereQuest (request) ؛ iterator <iretiTem> itr = items.iterator () ؛ بينما (itr.hasnext ()) {fileItem item = (fileItem) itr.next () ؛ // تحقق مما إذا كان المشروع الحالي هو مشروع نموذج عادي أو ملف تحميل. if (item.isformfield ()) {// إذا كان عنصر نموذج عادي ، فاعرض محتوى النموذج. سلسلة fieldName = item.getFieldName () ؛ if (fieldname.equals ("name")) // response to type = "text" name = "name" out.print ("اسم الحقل هو" + item.getString ()) ؛ // إظهار محتويات النموذج. out.print ("<br>") ؛ } آخر {// إذا كان يتم تحميل ملف ، فاعرض اسم الملف. Out.print ("اسم ملف التحميل هو" + item.getName ()) ؛ out.print ("<br>") ؛ }}} آخر {out.print ("يجب أن يكون enctype multipart/form-data") ؛ } ٪> <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> تحميل الملف </title> </head> <body> </body> </body> </html> نتيجة:
اسم الحقل ISJEFF
اسم ملف التحميل ISD:/C اختبار نموذج/أسئلة الواجب المنزلي. RAR
مثال 2
قم بتحميل ملفين إلى الدليل المحدد.
Demo2.html
<html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> <title> تحميل الملف </title> </head> <body> <name> form = "myform" action = "demo2.jsp" method = "post" enctype = name = "myfile"> <br> file2: <br> <input type = "file" name = "myfile"> <br> <br> <input type = "submit" name = "submit" value = "commice"> </form> </body> </html>
Demo2.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = gb18030" pageencoding = "gb18030" ٪> <٪@ page import = "org.apache.commons.fileupload. import = "org.apache.commons.fileupload.disk.*" ٪> <٪@ page import = "java.util.*" ٪> <٪@ page eSport = "java.io. Boolean Ismultipart = servletfileupload.ismultipartContent (request) ؛ if (isMultiPart == true) {try {fileItemFactory Factory = new diskfileItemFactory () ؛ servletfileupload تحميل = جديد servletfileupload (المصنع) ؛ قائمة <FileItem> عناصر = expload.parserequest (request) ؛ // الحصول على جميع الملفات ITerator <IpileItem> itr = items.iterator () ؛ بينما (itr.hasnext ()) {// تدريب كل عنصر ملف = (fileItem) itr.next () ؛ filename string = item.getName () ؛ // احصل على اسم الملف ، بما في ذلك المسار if (filename! = null) {File fullfile = new file (item.getName ()) ؛ ملف SAVEDFILE = ملف جديد (UploadPath ، FullFile.getName ()) ؛ item.write (SaveDfile) ؛ }} out.print ("التحميل الناجح") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }} else {out.println ("يجب أن يكون enctype multipart/form-data") ؛ } ٪> <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> تحميل الملف </title> </head> <body> </body> </body> </html> نتيجة:
التحميل ينجح
في هذا الوقت ، يمكنك رؤية الملفتين اللتين تم تحميلهما تحت "D:/temp".
مثال 3
قم بتحميل ملف إلى الدليل المحدد وحد من حجم الملف.
Demo3.html
<html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> <title> تحميل الملف </title> </head> <body> <name> form = "myform" action = "demo3.jsp" method = "post" enctype = name = "myfile"> <br> <br> <input type = "subfer"
demo3.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = gb18030" pageencoding = "gb18030" ٪> <٪@ page import = "org.apache.commons.fileupload. import = "org.apache.commons.fileupload.disk. ملف ("d: // temp") ؛ // تحميل دليل الملف if (! eploadpath.exists ()) {eploadpath.mkdirs () ؛ } // ملف دليل الملف المؤقت temppathfile = ملف جديد ("d: // temp // buffer //") ؛ if (! temppathfile.exists ()) {temppathfile.mkdirs () ؛ } جرب {// إنشاء مصنع لعناصر الملفات المستندة إلى القرص diskfileItemFactory Factory = new DiskfileItemFactory () ؛ // تعيين قيود المصنع المصنع. // SET SIZE BUMPER ، هنا هو 4KB Factory.SetRepository (Temppathfile) ؛ // SET DIRECTORY // قم بإنشاء ملف ServleTFileUdaD upload upload = جديد servletfileupload (المصنع) ؛ // قم بتعيين عمليات التحميل الإجمالية للطلب. SetSizemax (4194304) ؛ // SET MAXIMUM SIZE FILE ، هنا قائمة 4MB <PileItem> عناصر = upload.parserequest (request) ؛ // الحصول على جميع الملفات ITerator <IPITITEM> i = items.iterator () ؛ بينما (i.hasNext ()) {fileItem fi = (fileItem) i.next () ؛ اسم ملف السلسلة = fi.getName () ؛ if (filename! = null) {file fullfile = new file (fi.getName ()) ؛ ملف saveDfile = ملف جديد (UploadPath ، FullFile .getName ()) ؛ fi.write (SaveDfile) ؛ }} out.print ("التحميل الناجح") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } ٪> <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> تحميل الملف </title> </head> <body> </body> </body> </html> مثال 4
استخدم Servlet لتنفيذ تحميل الملف.
تحميل. java
حزمة com.zj.sample ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.util.iterator ؛ استيراد java.util.list ؛ استيراد javax.servlet.servletexception ؛ import javax.servlet.http.httpservlet ؛ import javax.servlet.http.httplet javax.servlet.http.httpservletresponse ؛ import org.apache.commons.fileupload.fileItem ؛ import org.apache.commons.fileupload.disk.diskfileitemfactory ؛ suppressWarnings ("Serial") تحميل الفئة العامة يمتد httpservlet {private string eploadpath = "d: // temp" ؛ // دليل لتحميل الملفات الخاصة سلسلة temppath = "d: // temp // buffer //" ؛ // ملف دليل الملف المؤقت Temppathfile ؛ suppressWarnings ("Unchected") public void dopost (httpservletrequest ، استجابة httpservletresponse) يلقي ioException ، servletexception {try {// إنشاء مصنع للملفات المستندة إلى القرص diskfileitemfactory = new diskfileitemfactory () ؛ // تعيين قيود المصنع المصنع. // SET SIZE BUMPER ، هنا هو 4KB Factory.SetRepository (Temppathfile) ؛ // SET DIRECTORY // قم بإنشاء ملف ServleTFileUdaD upload upload = جديد servletfileupload (المصنع) ؛ // قم بتعيين عمليات التحميل الإجمالية للطلب. SetSizemax (4194304) ؛ // SET MAXIMUM SIZE FILE ، هنا قائمة 4MB <PileItem> عناصر = upload.parserequest (request) ؛ // الحصول على جميع الملفات ITerator <IPITITEM> i = items.iterator () ؛ بينما (i.hasNext ()) {fileItem fi = (fileItem) i.next () ؛ اسم ملف السلسلة = fi.getName () ؛ if (filename! = null) {file fullfile = new file (fi.getName ()) ؛ ملف SAVEDFILE = ملف جديد (UploadPath ، FullFile.getName ()) ؛ fi.write (SaveDfile) ؛ }} system.out.print ("التحميل نجح") ؛ } catch (استثناء e) {// يمكن القفز على صفحة الخطأ e.printstacktrace () ؛ }} public void init () remrows servleTexception {file eploadFile = new file (eploadpath) ؛ if (! exploadfile.exists ()) {eploadfile.mkdirs () ؛ } ملف temppathfile = ملف جديد (temppath) ؛ if (! temppathfile.exists ()) {temppathfile.mkdirs () ؛ }}} Demo4.html
<html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gb18030"> <title> تحميل الملف </title> </head> <body> // Action = "FileUpload" يتوافق مع إعداد <url-patern> في <servlet Mapping> في web.xml. <form name = "myform" Action = "fileUpload" method = "post" enctype = "multipart/form-data"> file: <br> <input type = "file" name = "myfile"> <br> <br> <input type = "profft"
web.xml
<Vervlet> <Sradlet-Name> تحميل </servlet-name> <Servlet-Class> com.zj.sample.upload </servlet-class> </servlet> <radlet-mapping>
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.