ตั้งชื่อออบเจ็กต์ฟิลด์ไฟล์หลายไฟล์ด้วยชื่อเดียวกันในหน้า upload.jsp เพื่อให้สามารถแยกวิเคราะห์ฟิลด์ไฟล์หลายไฟล์เป็นอาร์เรย์ในการดำเนินการได้ ขนาดของอาร์เรย์คือจำนวนฟิลด์ไฟล์ในเวลาเดียวกัน ฟิลด์จะถูกแยกวิเคราะห์เป็นตัวแปรที่สอดคล้องกันสามตัว ดังนั้นฟิลด์ไฟล์หลายฟิลด์จึงสอดคล้องกับสามอาร์เรย์ โดยที่ขนาดของแต่ละอาร์เรย์คือจำนวนฟิลด์ของไฟล์ โค้ดเพจ jsp เป็นดังนี้:
</แบบฟอร์ม>
การดำเนินการที่สอดคล้องกันจะสำรวจช่องไฟล์ทั้งหมดตามลำดับ จากนั้นจะสร้างสตรีมไฟล์อินพุตที่สอดคล้องกัน สตรีมไฟล์เอาต์พุตจะเพิ่มสตรีมไฟล์เอาต์พุตที่สอดคล้องกันเพื่อบันทึกไฟล์ในเส้นทางการจัดเก็บเซิร์ฟเวอร์ที่ระบุ ในเวลาเดียวกัน ให้ระบุเส้นทางการบันทึกของไฟล์บนเซิร์ฟเวอร์แบบไดนามิก
รหัสการดำเนินการมีดังนี้:
นำเข้า java.io.File;
นำเข้า java.io.FileInputStream;
นำเข้า java.io.FileOutputStream;
นำเข้า org.apache.struts2.ServletActionContext;
นำเข้า com.opensymphony.xwork2.ActionSupport;
UploadAction คลาสสาธารณะขยาย ActionSupport {
ชื่อสตริงส่วนตัว
อัพโหลดไฟล์ส่วนตัว [];
สตริงส่วนตัว [] uploadFileName;
สตริงส่วนตัว [] uploadContentType;
สตริงส่วนตัว savePath;
สตริงสาธารณะ getTitle() {
ชื่อกลับ;
-
setTitle โมฆะสาธารณะ (ชื่อสตริง) {
this.title = ชื่อ;
-
ไฟล์สาธารณะ [] getUpload () {
ส่งคืนการอัปโหลด;
-
โมฆะสาธารณะ setUpload (อัพโหลดไฟล์ []) {
this.upload = อัพโหลด;
-
สตริงสาธารณะ [] getUploadFileName () {
กลับอัพโหลดFileName;
-
โมฆะสาธารณะ setUploadFileName (สตริง [] uploadFileName) {
this.uploadFileName = uploadFileName;
-
สตริงสาธารณะ [] getUploadContentType () {
กลับอัพโหลดContentType;
-
โมฆะสาธารณะ setUploadContentType (สตริง [] uploadContentType) {
this.uploadContentType = uploadContentType;
-
สตริงสาธารณะ getSavePath() {
กลับ ServletActionContext.getRequest().getRealPath(savePath);
-
โมฆะสาธารณะ setSavePath (สตริง savePath) {
this.savePath = บันทึกพาธ;
-
การอัปโหลดสตริงสาธารณะ () พ่นข้อยกเว้น {
ไฟล์[] ไฟล์=this.getUpload();
สำหรับ(int i=0;i<files.length;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024];
FileInputStream fis = FileInputStream ใหม่ (ไฟล์ [i]);
int เลน = 0;
ในขณะที่ ((len=fis.read(บัฟเฟอร์))>0){
fos.write (บัฟเฟอร์, 0, เลน);
-
-
คืนความสำเร็จ;
-
-
ไฟล์ struts.xml ได้รับการกำหนดค่าดังนี้: กำหนดค่า interceptor สำหรับการอัพโหลดไฟล์ ประเภทไฟล์อัพโหลดที่อนุญาต ขีดจำกัดขนาดไฟล์อัพโหลด และแนะนำ defaultStack interceptor และตำแหน่งหน่วยเก็บข้อมูลของไฟล์ที่อัพโหลดบนเซิร์ฟเวอร์
</สตรัท>
โค้ดเพจ Success.jsp เป็นดังนี้: