Nommez plusieurs objets de champ de fichier avec le même nom dans la page upload.jsp, afin que plusieurs champs de fichier puissent être analysés dans un tableau dans l'action. La taille du tableau correspond au nombre de champs de fichier en même temps, un fichier. Le champ est analysé en trois variables correspondantes, de sorte que plusieurs champs de fichier correspondent à trois tableaux, où la taille de chaque tableau correspond au nombre de champs de fichier. Le code de la page jsp est le suivant :
</form>
L'action correspondante parcourt tous les champs de fichier en séquence, puis génère le flux de fichier d'entrée correspondant. Le flux de fichier de sortie ajoute le flux de fichier de sortie correspondant pour enregistrer le fichier dans le chemin de stockage du serveur spécifié. En même temps, spécifiez dynamiquement le chemin de sauvegarde du fichier sur le serveur.
Le code d'action est le suivant :
importer java.io.File ;
importer java.io.FileInputStream ;
importer java.io.FileOutputStream ;
importer org.apache.struts2.ServletActionContext ;
importer com.opensymphony.xwork2.ActionSupport ;
la classe publique UploadAction étend ActionSupport {
titre de chaîne privé ;
téléchargement de fichier privé [] ;
private String[] uploadFileName ;
private String[] uploadContentType ;
chaîne privée savePath ;
chaîne publique getTitle() {
renvoyer le titre ;
}
public void setTitle (titre de la chaîne) {
this.title = titre ;
}
fichier public[] getUpload() {
retourner le téléchargement ;
}
public void setUpload (téléchargement de fichier []) {
this.upload = télécharger ;
}
public String[] getUploadFileName() {
retourner uploadFileName ;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName ;
}
public String[] getUploadContentType() {
renvoie uploadContentType ;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType ;
}
chaîne publique getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String upload() lève une exception{
File[] files=this.getUpload();
pour(int i=0;i<files.length;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
octet[] tampon=nouvel octet[1024];
FileInputStream fis=new FileInputStream(files[i]);
int longueur = 0 ;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}
retourner le SUCCÈS ;
}
}
Le fichier struts.xml est configuré comme suit : configurez l'intercepteur pour le téléchargement de fichiers, les types de fichiers de téléchargement autorisés, la limite de taille de fichier de téléchargement et introduisez l'intercepteur defaultStack et l'emplacement de stockage du fichier téléchargé sur le serveur.
</struts>
Le code de la page success.jsp est le suivant :