تعليق: قد يكون تحميل ملفات متعددة معقدًا للتنفيذ في الماضي ، ولكن منذ ظهور HTML5 ، أصبح الأمر سهلاً للغاية. هناك مثال جيد أدناه ، يمكنك الرجوع إليه.
الاستخدام الرئيسي هو السمة المتعددة لـ <prope><type type = "file" متعددة />
فيما يلي الكود التفصيلي للصفحة:
<! doctype html>
<html>
<head>
<meta http-equiv = "content-type" content = "text /html ؛ charset = gb2312" />
<title> الحل 4-5: إرسال ملفات متعددة </title>
</head>
<body>
<شكل
Action = "http://10.10.25.31:8080/myupload/uploadphotoservlet" enctype = "multipart/form-data" method = "post">
<إدخال نوع = "ملف" متعددة /> <الإدخال
اكتب = "إرسال" value = "إرسال"> <إدخال type = "reset" value = "reset">
</form>
</body>
</html>
رمز مفصل لخلفية جافا:
استيراد java.io.file ؛
استيراد java.io.ioException ؛
استيراد java.text.simpledateformat ؛
استيراد java.util.calendar ؛
استيراد java.util.date ؛
استيراد java.util.list ؛
استيراد javax.servlet.servletexception ؛
استيراد javax.servlet.http.httpservlet ؛
استيراد javax.servlet.http.httpservletrequest ؛
استيراد javax.servlet.http.httpservletresponse ؛
استيراد org.apache.commons.fileupload.fileItem ؛
استيراد org.apache.commons.fileupload.fileuploadexception ؛
استيراد org.apache.commons.fileupload.disk.diskfileItemFactory ؛
استيراد org.apache.commons.fileupload.servlet.servletfileupload ؛
/**
* Servlet فئة تطبيق التحميل
*/
يمتد تحميل الفئة العامة {فئة عامة.
خاص ثابت نهائي طويل المسبانيويد = 1L ؛
/**
* see httpservlet#httpservlet ()
*/
تحميل عام posteptoServlet () {
ممتاز()؛
// كعب مُنشئ تلقائيًا
}
/**
* see httpservlet#doget (طلب httpservletrequest ، استجابة httpservletresponse)
*/
DOGED VOID المحمي (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {
// TODO METHOTION METTOD COBS
dopost (طلب ، استجابة) ؛
}
/**
* see httpservlet#dopost (طلب httpservletrequest ، استجابة httpservletresponse)
*/
suppressWarnings ("غير محدد")
DOPOST الفراغ المحمي (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {
String ImagePath = "C: // UploadFile // Image //"+geteachdate ()+"//" ؛ // إنشاء مجلدات حسب التاريخ
ملف eploadpath = ملف جديد (ImagePath) ؛
if (! UploadPath.exists ()) {
تحميل path.mkdirs () ؛
}
ملف TMP = ملف جديد ("C: // TMP //") ؛
if (! tmp.exists ()) {
tmp.mkdirs () ؛
}
مصنع diskfileitemfactory = جديد diskfileItemFactory () ؛ // إنشاء مصنع للقرص
مصنع.
المصنع.
servletfileupload sfu = servletfileupload (مصنع) ؛ // إنشاء أدوات معالجة
sfu.setsizemax (10*1024*1024) ؛ // الحد الأقصى لحجم الملف الذي يمكن استلامه بواسطة الخادم ، -1 يعني عدم وجود حد أعلى
اسم ملف السلسلة = فارغ ؛
يحاول {
قائمة <FileItem> list = sfu.parserequest (request) ؛ // analysis
if (list.size () <1) {
يعود؛
}
لـ (int j = 0 ؛ j <list.size () ؛ j ++) {
fileItem item = list.get (j) ؛
filename = item.getName () ؛
if (filename.equals ("")) {
request.getRequestDispatcher ("/com/visualizerphoto.jsp").
يعود؛
}
int pos = filename.lastindexof (".") ؛ // احصل على تنسيق ملف الصورة
if (pos> 0) {
تاريخ تاريخ = تاريخ جديد () ؛
filename = imagePath+Date.getTime ()+filename.substring (pos) ؛
}
System.out.println ("العنصر:"+عنصر) ؛
item.write (ملف جديد (اسم الملف)) ؛ // اكتب إلى القرص
}
} catch (fileuploadexception e) {
E.PrintStackTrace () ؛
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
// 13-11-15
السلسلة الثابتة العامة geteachdate () {
Calendar Cal = Calendar.getInstance () ؛
Cal.Add (Calendar.Date ، 0) ؛
السلسلة بالأمس = New SimpleTformat ("Yyyy-MM-DD") .Format (Cal
.getTime ()) ؛
string [] dates = adge.split ("-") ؛
سلسلة realdate = التواريخ [0] .SubString (2 ، 4) + "-" + تواريخ [1] + "-"
+ تواريخ [2] ؛
return arialdate.trim () ؛
}
}
هنا هو العرض: