Exemple de téléchargement de fichier Struts
Dans ce didacticiel, vous apprendrez à télécharger un fichier sur le système de fichiers du serveur avec la balise Struts<html:file>.
Téléchargez cet exemple de téléchargement de fichier Struts -Struts-FileUpload-Example.zip
1. Formulaire d'action
Dans le formulaire Action, créez une variableorg.apache.struts.upload.FormFile pour contenir le fichier téléchargé, ainsi que la validation du formulaire pour le fichier téléchargé.
package com.example.common.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.upload.FormFile;
public class FileUploadForm extends ActionForm{
private FormFile file;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if( getFile().getFileSize()== 0){
errors.add("common.file.err",
new ActionMessage("error.common.file.required"));
return errors;
}
//only allow textfile to upload
if(!"text/plain".equals(getFile().getContentType())){
errors.add("common.file.err.ext",
new ActionMessage("error.common.file.textfile.only"));
return errors;
}
//file size cant larger than 10kb
System.out.println(getFile().getFileSize());
if(getFile().getFileSize() > 10240){ //10kb
errors.add("common.file.err.size",
new ActionMessage("error.common.file.size.limit", 10240));
return errors;
}
return errors;
}
}
2. action
Dans la classe Action, récupérez simplement le fichier téléchargé et enregistrez-le dans le système de fichiers du serveur, et stockez les détails du fichier nouvellement créé dans une session pour une utilisation ultérieure.
package com.example.common.action;
import java.io.File;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.example.common.form.FileUploadForm;
public class FileUploadAction extends Action{
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
FileUploadForm fileUploadForm = (FileUploadForm)form;
FormFile file = fileUploadForm.getFile();
//Get the servers upload directory real path name
String filePath =
getServlet().getServletContext().getRealPath("/") +"upload";
//create the upload folder if not exists
File folder = new File(filePath);
if(!folder.exists()){
folder.mkdir();
}
String fileName = file.getFileName();
if(!("").equals(fileName)){
System.out.println("Server path:" +filePath);
File newFile = new File(filePath, fileName);
if(!newFile.exists()){
FileOutputStream fos = new FileOutputStream(newFile);
fos.write(file.getFileData());
fos.flush();
fos.close();
}
request.setAttribute("uploadedFilePath",newFile.getAbsoluteFile());
request.setAttribute("uploadedFileName",newFile.getName());
}
return mapping.findForward("success");
}
}
3. JSP
Vous devez définir le type d'encodage de la balise<html:form> sur «multipart/form-data» et spécifier la méthode HTTP sur «post».
fileupload.jsp
+ : + +
display.jsp
File uploaded to :
">
Click here to download it
4. struts-config.xml
Liez tous ensemble
Essaye-le
http://localhost:8080/StrutsExample/UploadPage.do
Sélectionnez un fichier et cliquez sur le bouton Soumettre.

http://localhost:8080/StrutsExample/Upload.do
Il sera transféré vers display.jsp et afficher les détails du fichier téléchargé.
