Struts2文件的上传

前端jsp页面:

  需要注意form标签需要引入这句:enctype="multipart/form-data"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传文件的页面</title>
</head>
<body>

<form action="${pageContext.request.contextPath }/fileUploadAction" method="post" enctype="multipart/form-data">
    文件名:<input type="text" name="filename"/><br/>
    文件:<input type="file" name="file1"/><br/>
         <input type="submit" value="上传文件">
</form>
</body>
</html>

 

action中的页面

package com.bie.upload;

import java.io.File;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
* @author BieHongLi
* @version 创建时间:2017年3月6日 上午10:43:52
* 上传文件的Action处理
*
* struts2文件上传
*      1:struts2中文件上传拦截器帮助我们完成上传文件的功能;
*
*
*/
public class UploadAction extends ActionSupport{
//对应表单的file1  <input type="file" name="file1"/>
    private File file1;
    //当前上传的文件名
    private String file1FileName;
    //文件类型(MIME)
    private String file1ContentType;
public void setFile1(File file1) { this.file1 = file1; } public void setFile1FileName(String file1FileName) { this.file1FileName = file1FileName; } public void setFile1ContentType(String file1ContentType) { this.file1ContentType = file1ContentType; } @Override public String execute() throws Exception { //开始拿到上传的文件,进行处理,上传之前,要创建一个upload目录//把文件上传到upload目录,获取上传的目录路径 String path=ServletActionContext.getServletContext().getRealPath("/upload");
//创建目标文件对象,文件名file1FileName,格式_FileName File targetFile=new File(path,file1FileName);
//把上传的文件,拷贝到目标文件中 把file1的文件拷贝到 targetFile目录中 FileUtils.copyFile(file1, targetFile); return SUCCESS; } }

 

可以设置上传 文件的大小、和类型

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!-- 声明包 -->
    <package name="fileuploadpackage" extends="struts-default">
        <!-- 定义action -->
        <action name="fileUploadAction" class="com.bie.upload.UploadAction">
            <!-- 显示成功的jsp页面 -->
            <result name="success">/uploadfile/success.jsp</result>

            <!-- 文件上传拦截器,限制运行上传的文件的类型,还有其他一个方法,这是其中一个 -->
               <interceptor-ref name="defaultStack">
                   <!-- 限制运行的文件的扩展名 fileUpload.allowedExtensions固定写法-->
                   <param name="fileUpload.allowedExtensions">txt,jpg,gif,png</param>
               </interceptor-ref>


            <!-- 错误提示,档文件上传出现错误的时候,struts内部会返回input视图,
                错误视图,所以就需要我们在struts.xml中配置Input视图对应的错误页面 -->
            <result name="input">/uploadfile/error.jsp</result>

        </action>
    </package>
</struts>




参考代码
        <!-- 限制文件的扩展名,如果有多个限制条件用逗号隔开
            <interceptor-ref name="defaultStack">
                <param name="fileUpload.allowedExtensions">jpg</param>
            </interceptor-ref>
             -->
             <!-- 限制文件的MIME,如果有多个文件时使用逗号隔开 -->
             <interceptor-ref name="defaultStack">
                <param name="fileUpload.allowedTypes">image/jpeg</param>
             </interceptor-ref>
            <result name="input">upload.jsp</result>

 

 

 

posted @ 2020-05-29 13:40  gaoshengjun  阅读(124)  评论(0编辑  收藏  举报