Nombra varios objetos de campo de archivo con el mismo nombre en la página upload.jsp, de modo que varios campos de archivo se puedan analizar en una matriz en la acción. El tamaño de la matriz es el número de campos de archivo al mismo tiempo. El campo se analiza en tres variables correspondientes, por lo que varios campos de archivo corresponden a tres matrices, donde el tamaño de cada matriz es el número de campos de archivo. El código de la página jsp es el siguiente:
</formulario>
La acción correspondiente atraviesa todos los campos del archivo en secuencia y luego genera la secuencia del archivo de entrada correspondiente. La secuencia del archivo de salida agrega la secuencia del archivo de salida correspondiente para guardar el archivo en la ruta de almacenamiento del servidor especificada. Al mismo tiempo, especifique dinámicamente la ruta para guardar el archivo en el servidor.
El código de acción es el siguiente:
importar java.io.File;
importar java.io.FileInputStream;
importar java.io.FileOutputStream;
importar org.apache.struts2.ServletActionContext;
importar com.opensymphony.xwork2.ActionSupport;
la clase pública UploadAction extiende ActionSupport {
título de cadena privada;
carga de archivo privado [];
cadena privada [] uploadFileName;
cadena privada [] uploadContentType;
ruta de guardado de cadena privada;
cadena pública getTitle() {
título de devolución;
}
setTitle público vacío (título de cadena) {
this.title = título;
}
Archivo público[] getUpload() {
carga de devolución;
}
setUpload público vacío (carga de archivo []) {
this.upload = subir;
}
cadena pública[] getUploadFileName() {
devolver cargarFileName;
}
setUploadFileName público vacío (String[] uploadFileName) {
this.uploadFileName = cargarFileName;
}
Cadena pública[] getUploadContentType() {
devolver cargarContentType;
}
setUploadContentType público vacío (String[] uploadContentType) {
this.uploadContentType = cargarContentType;
}
cadena pública getSavePath() {
devolver ServletActionContext.getRequest().getRealPath(savePath);
}
setSavePath vacío público (String savePath) {
this.savePath = savePath;
}
carga de cadena pública () lanza excepción {
Archivo[] archivos=this.getUpload();
for(int i=0;i<archivos.longitud;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
byte[] buffer=nuevo byte[1024];
FileInputStream fis=new FileInputStream(archivos[i]);
longitud int=0;
while((len=fis.read(búfer))>0){
fos.write(búfer,0,len);
}
}
devolver ÉXITO;
}
}
El archivo struts.xml se configura de la siguiente manera: configure el interceptor para la carga de archivos, los tipos de archivos de carga permitidos, el límite de tamaño de los archivos de carga e introduzca el interceptor defaultStack y la ubicación de almacenamiento del archivo cargado en el servidor.
</struts>
El código de la página Success.jsp es el siguiente: