Benennen Sie mehrere Dateifeldobjekte mit demselben Namen auf der Seite upload.jsp, sodass mehrere Dateifelder in der Aktion in ein Array analysiert werden können. Die Größe des Arrays entspricht der Anzahl der Dateifelder gleichzeitig Das Feld wird in drei entsprechende Variablen analysiert, sodass mehrere Dateifelder drei Arrays entsprechen, wobei die Größe jedes Arrays der Anzahl der Dateifelder entspricht. Der JSP-Seitencode lautet wie folgt:
</form>
Die entsprechende Aktion durchläuft nacheinander alle Dateifelder und generiert dann den entsprechenden Eingabedateistream. Der Ausgabedateistream fügt den entsprechenden Ausgabedateistream hinzu, um die Datei im angegebenen Serverspeicherpfad zu speichern. Geben Sie gleichzeitig dynamisch den Speicherpfad der Datei auf dem Server an.
Der Aktionscode lautet wie folgt:
java.io.File importieren;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
Die öffentliche Klasse UploadAction erweitert ActionSupport {
privater String-Titel;
private Datei[] hochladen;
private String[] uploadFileName;
private String[] uploadContentType;
privater String savePath;
öffentlicher String getTitle() {
Titel zurückgeben;
}
public void setTitle(String title) {
this.title = Titel;
}
öffentliche Datei[] getUpload() {
Zurück-Upload;
}
public void setUpload(File[] upload) {
this.upload = hochladen;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
öffentlicher String getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String upload() löst eine Ausnahme aus{
File[] files=this.getUpload();
for(int i=0;i<files.length;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
byte[] buffer=neues Byte[1024];
FileInputStream fis=new FileInputStream(files[i]);
int len=0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}
Rückkehr ERFOLGREICH;
}
}
Die Datei struts.xml ist wie folgt konfiguriert: Konfigurieren Sie den Interceptor für das Hochladen von Dateien, die zulässigen Upload-Dateitypen, die Größenbeschränkung für Upload-Dateien und führen Sie den defaultStack-Interceptor und den Speicherort der hochgeladenen Datei auf dem Server ein.
</struts>
Der Seitencode success.jsp lautet wie folgt: