Struts2 of uploading files

A single file upload

 1. Define form form

<form action="uploadFile" method="post" enctype="multipart/form-data">
    上传文件:<input type="file" name="myFile">
    <input type="submit" value="提交">
</form>

  Key:

    (1) form is added on the form attribute enctype = "multipart / form-data"

    (2) Select the file type is set to file input tag

 2. Definition File Upload Action (custom on demand)

package com.yg.study.action;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class FileUploadAction {
    private File myFile;
    private String myFileFileName;

    public File getMyFile() {
        return myFile;
    }


    public void setMyFile(File myFile) {
        this.myFile = myFile;
    }


    public String getMyFileFileName() {
        return myFileFileName;
    }


    public void setMyFileFileName(String myFileFileName) {
        this.myFileFileName = myFileFileName;
    }


    public String upload(){
        String path = this.getClass().getResource("/").getPath();
        //System.out.println(path);
        File file=new File(path, "upload");
        if(!file.exists()){
            file.mkdir();
        }
        try {
            FileUtils.copyFile(myFile, new File(file, myFileFileName));
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        return "success";
    }
}

  Key:

    (1) File type is defined, the value of the variable name of the variable selected input name attribute tag file to form a form, here myFile, for receiving a file form submission form

    (2) defined type String, the variable named orm form file name attribute value of the selected input tag + "FileName" variable, here myFileFileName, for receiving the file name of the form submission form

    (3) providing a get and set methods for the above two variables, especially indispensable set method, or the value of the variable is not

 3. Configure Request Mapping struts.xml (custom on demand)

<action name="uploadFile" class="com.yg.study.action.FileUploadAction" method="upload">
    <result name="success">/success.jsp</result>
</action>

 4. Start project

  Start the project, access to the file upload page, select the file, you can submit

       

 5. Set the maximum file size

    struts default file uploads up to 2M, 2M upload files larger than an exception will be reported

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (53647459) exceeds the configured maximum (2097152)
    at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:968)
    at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310)
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334)
    at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parseRequest(JakartaMultiPartRequest.java:192)
    at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.processUpload(JakartaMultiPartRequest.java:131)
    at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:92)
    at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.<init>(MultiPartRequestWrapper.java:84)
    at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:849)
    at org.apache.struts2.dispatcher.ng.PrepareOperations.wrapRequest(PrepareOperations.java:138)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

  Solution:

    Add the following configuration in struts.xml file:

<constant name="struts.multipart.maxSize" value="104857600"></constant>

    I have here the maximum file size to 100M (according to the project needs to customize)

Second, multiple file uploads

  To be continued ......

  

Guess you like

Origin www.cnblogs.com/antusheng/p/11804442.html