Exemple de téléchargement de fichier Struts

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.

Struts-file-upload-example1

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

Struts-file-upload-example2