ความคิดเห็น: การอัปโหลดหลายไฟล์อาจมีความซับซ้อนในการใช้งานในอดีต แต่เนื่องจากการเกิดขึ้นของ HTML5 มันกลายเป็นเรื่องง่ายมาก มีตัวอย่างที่ดีด้านล่างคุณสามารถอ้างถึงได้
การใช้งานหลักคือคุณลักษณะหลายอย่างของ <put><input type = "file" multiple />
นี่คือรหัสโดยละเอียดของหน้า:
<! 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">
<input type = "file" multiple /> <อินพุต
type = "ส่ง" value = "ส่ง"> <อินพุต type = "รีเซ็ต" value = "รีเซ็ต">
</form>
</body>
</html>
รหัสรายละเอียดของ Java Background:
นำเข้า 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 updoadphotoservlet
-
Public Class UploadPhotoServlet ขยาย httpservlet {
ส่วนตัวคงที่สุดท้าย Long SerialVersionUid = 1L;
-
* @SEE httpservlet#httpservlet ()
-
Public UploadPhotoservlet () {
super ();
// todo todo stub constructor ที่สร้างขึ้นอัตโนมัติ
-
-
* @See httpservlet#doGet (คำขอ httpservletrequest, การตอบกลับ httpservletResponse)
-
Void Doget ที่ได้รับการป้องกัน (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {
// todo วิธีการที่สร้างขึ้นอัตโนมัติสตับ
dopost (คำขอ, การตอบกลับ);
-
-
* @SEE httpservlet#dopost (คำขอ httpservletrequest, การตอบกลับ httpservletResponse)
-
@suppresswarnings ("ไม่ได้ตรวจสอบ")
ได้รับการป้องกันโมฆะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {
string imagePath = "c: // uploadfile // image //"+getEachDate ()+"//"; // สร้างโฟลเดอร์ตามวันที่
ไฟล์ uploadPath = ไฟล์ใหม่ (imagePath);
if (! uploadPath.exists ()) {
uploadPath.mkdirs ();
-
ไฟล์ tmp = ไฟล์ใหม่ ("c: // tmp //");
if (! tmp.exists ()) {
tmp.mkdirs ();
-
DiskFileItemFactory Factory = New DiskFileItemFactory (); // สร้างโรงงานดิสก์
Factory.SetRepository (TMP); // ตั้งค่าเส้นทางแคชไฟล์
Factory.SetSizEthreshold (10 * 1096); // ค่าวิกฤตเริ่มต้นของการบันทึกไฟล์ในหน่วยความจำหรือโฟลเดอร์ชั่วคราวของดิสก์คือ 10240, เช่น 10KB
ServletFileUpload SFU = ใหม่ servletFilePilePload (โรงงาน); // สร้างเครื่องมือการประมวลผล
SFU.SetSizEmax (10*1024*1024); // ขนาดไฟล์สูงสุดที่เซิร์ฟเวอร์สามารถรับได้ -1 หมายถึงไม่มีขีด จำกัด สูงสุด
ชื่อไฟล์สตริง = null;
พยายาม {
รายการ <fileItem> list = sfu.parserequest (คำขอ); // การวิเคราะห์
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"). forward (คำขอ, การตอบกลับ);
กลับ;
-
int pos = filename.lastindexof ("."); // รับรูปแบบไฟล์ภาพ
ถ้า (pos> 0) {
วันที่วันที่ = วันที่ใหม่ ();
filename = imagepath+date.getTime ()+filename.substring (pos);
-
System.out.println ("รายการ:"+รายการ);
item.write (ไฟล์ใหม่ (ชื่อไฟล์)); // เขียนไปยังดิสก์
-
} catch (fileuploadexception e) {
E.PrintStackTrace ();
} catch (Exception e) {
E.PrintStackTrace ();
-
-
// 13-11-15
สตริงคงที่สาธารณะ getEachdate () {
ปฏิทิน cal = calendar.getInstance ();
Cal.Add (Calendar.date, 0);
สตริงเมื่อวาน = ใหม่ simpledateFormat ("yyyy-mm-dd") .format (cal
.getTime ());
สตริง [] วันที่ = เมื่อวานนี้ split ("-");
string realdate = วันที่ [0] .substring (2, 4) + "-" + วันที่ [1] + "-"
+ วันที่ [2];
return realate.trim ();
-
-
นี่คือการแสดงผล: