Назовите несколько объектов полей файла с одинаковым именем на странице 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() {
вернуть заголовок;
}
public void setTitle(String title) {
this.title = заголовок;
}
общественный файл [] getUpload () {
обратная загрузка;
}
public void setUpload(File[] upload) {
this.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);
}
public void setSavePath (String savePath) {
this.savePath = savePath;
}
загрузка публичной строки () выдает исключение {
Файл[] files=this.getUpload();
for(int i=0;i<files.length;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
байт [] буфер = новый байт [1024];
FileInputStream fis = новый FileInputStream (файлы [i]);
интервал лен = 0;
while((len=fis.read(буфер))>0){
fos.write(буфер,0,len);
}
}
вернуть УСПЕХ;
}
}
Файл struts.xml настраивается следующим образом: настройте перехватчик для загрузки файлов, разрешенные типы загружаемых файлов, ограничение размера загружаемого файла, а также укажите перехватчик defaultStack и место хранения загруженного файла на сервере.
</struts>
Код страницы Success.jsp выглядит следующим образом: