قم بتسمية كائنات حقول ملفات متعددة بنفس الاسم في صفحة upload.jsp، بحيث يمكن تحليل حقول ملفات متعددة في مصفوفة في الإجراء. حجم المصفوفة هو عدد حقول الملف في نفس الوقت يتم تحليل الحقل إلى ثلاثة متغيرات مقابلة، بحيث تتوافق حقول الملفات المتعددة مع ثلاث صفائف، حيث يكون حجم كل مصفوفة هو عدد حقول الملف. رمز صفحة jsp هو كما يلي:
</النموذج>
يجتاز الإجراء المقابل جميع حقول الملفات بالتسلسل، ثم يقوم بإنشاء دفق ملف الإدخال المقابل، ويضيف دفق ملف الإخراج دفق ملف الإخراج المقابل لحفظ الملف في مسار تخزين الخادم المحدد. وفي الوقت نفسه، قم بتحديد مسار حفظ الملف على الخادم ديناميكيًا.
رمز الإجراء هو كما يلي:
استيراد java.io.File؛
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
الطبقة العامة UploadAction تمتد ActionSupport {
عنوان سلسلة خاصة؛
تحميل ملف خاص[]؛
سلسلة خاصة[] uploadFileName;
سلسلة خاصة[] uploadContentType;
سلسلة خاصة savePath؛
سلسلة عامة getTitle () {
عنوان العودة؛
}
عنوان الفراغ العام (عنوان السلسلة) {
this.title = title;
}
الملف العام[] getUpload() {
تحميل العودة؛
}
مجموعة الفراغ العام تحميل (ملف [] تحميل) {
this.upload = upload;
}
السلسلة العامة[] getUploadFileName() {
إرجاع اسم الملف ؛
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
السلسلة العامة[] getUploadContentType() {
إرجاع تحميلContentType؛
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
سلسلة عامة getSavePath () {
return ServletActionContext.getRequest().getRealPath(savePath);
}
مجموعة الفراغ العامSavePath(سلسلة savePath) {
this.savePath = savePath;
}
تحميل السلسلة العامة () يلقي استثناءً {
File[] files=this.getUpload();
for(int i=0;i<files.length;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
بايت[] المخزن المؤقت=بايت جديد[1024];
FileInputStream fis=new FileInputStream(files[i]);
كثافة العمليات لين = 0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}
عودة النجاح؛
}
}
يتم تكوين ملف struts.xml على النحو التالي: تكوين المعترض لتحميل الملف، وأنواع ملفات التحميل المسموح بها، والحد الأقصى لحجم ملف التحميل، وتقديم معترض defaultStack وموقع تخزين الملف الذي تم تحميله على الخادم.
</الدعامات>
رمز صفحة Success.jsp هو كما يلي: