首页 > 代码库 > Struts文件上传

Struts文件上传

/* 文件上传的先决条件
 * 1. 上传的表单必须以POST方式提交(method="post")
 * 2. 提交需要指定编码为: `multipart/form-data` (enctype="multipart/form-data`")
 * 3. 可以在xml配置文件中添加一个 name="input"的result, 便于错误信息回显
 * 4. 如果下载的文件太大, 需要在xml配置文件中修改默认的文件的最大字节数, 如最大允许上传5M:
 *         ```
 *         <constant name="struts.multipart.maxSize" value="http://www.mamicode.com/5242880" />
 *         ```
 */

1.上传的JSP页面中的代码:

  //引入S标签

   <!-- from表单 -->    <s:fielderror fieldName="file"></s:fielderror> 错误信息提示 <s:form action="/fileupload" method="post" theme="simple" enctype="multipart/form-data"> <!-- 选择文件标签 --> <s:file name="file" /> <!-- submit按钮 --> <s:submit value="上传" /> </s:form>

2.具体Action类的操作:

public class FileUpLoadAction extends ActionSupport {

    private static final long serialVersionUID = 1L;
    //传过来的文件,file和jsp页面的[<s:fielderror fieldName="file"></s:fielderror>]fieldName一样    
    private File file;
    //传过来的文件名:
    private String fileFileName;
    //传过来的文件类型:
    private String  fileContentType;
    
  生成三个字段的getter,setter方法
//业务处理
    public String execute() throws Exception {
        //获取到"/123"的路径
        String path = ServletActionContext.getServletContext().getRealPath("/123");
        //将文件类型进行"/"截取,得到最后一个元素[1],进行字符串拼接
        //fileName=UUID.文件类型
        String fileName=UUID.randomUUID().toString()+"."+fileContentType.split("/")[1];
        //在"/123"中建一个名为fileName的文件
        File files=new File(path,fileName);
        //将传过来的文件file拷贝到"/123"中名为fileName的文件中
        FileUtils.copyFile(file, files);
        return NONE;
    }

3.struts.xml中的代码:

<struts>
    <!-- 服务器允许最大的上传字节大小 -->
    <constant name="struts.multipart.maxSize" value="5242880"></constant>
        <include file="struts-default.xml"></include>
    <package name="fileuploads" extends="struts-default">
        <action name="fileupload"  class="com.gxxy.filetransport.filedownload.FileUpLoadAction">
                <interceptor-ref name="fileUpload">
                <!-- 设置上传文件的字节大小,这个大小只能小于服务器允许的最大的上传字节大小 -->
                    <param name="maximumSize">1048576</param>
                    <!-- 设置允许上传的拓展名 -->
                    <param name="allowedExtensions">png,jpg,txt</param>
                </interceptor-ref>
                <interceptor-ref name="defaultStack"/>
            <result name="input">/JSP/filetransport/fileupload.jsp</result>
            <result name="none">/JSP/filetransport/fileupload.jsp</result>
        </action>
    </package>
</struts>  

 

Struts文件上传