struts2的单文件上传与多文件上传

文件上传是指将本地文件上传到服务器的指定目录下,使用struts上传文件,首先要使form表单的enctype属性值设置为multipart/form-data。

单文件上传

文件上传页面代码如下

<body>
<s:actionerror />
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
    <input name="upload" type="file" /><br />
    <input type="submit" value="上传" />
</form>
</body>

文件上传Action类

public class UploadAction extends ActionSupport {
    private File upload; //文件
    private String uploadContentType;//文件类型
    private String uploadFileName;//文件名
	//此处省略3个属性的get与set方法

    public String upload() {
        // 设置文件保存的路径
        String path = ServletActionContext.getServletContext().getRealPath("/WEB-INF/upload/");
            File f = new File(path+"/"+uploadFileName);
            try {
                FileUtils.copyFile(upload, f);
                System.out.println("上传成功");
            } catch (IOException e) {
            	//设置错误信息,上传错误时在首页显示
                this.addActionError("上传失败");
                e.printStackTrace();
                //发生错误时返回页面
                return "upload";
            }
        return null;
    }
}

struts.xml中需要设置个错误跳转的页面

 <action name="upload" method="upload" class="com.wang.action.UploadAction">
            <result name="upload">/Upload.jsp</result>
 </action>

多文件上传

多文件上传与单文件上传一样的,就是在上传的页面多设置几个文件的表单框,主意表单name属性的值要一样

<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
    <input name="upload" type="file" /><br/>
    <input name="upload" type="file" />
    <input type="submit" value="上传" />
</form>

然后再Action中需要用数组操作代替原先的单文件操作

public class UploadAction extends ActionSupport {
    private File[] upload; //文件
    private String[] uploadContentType;//文件类型
    private String[] uploadFileName;//文件名
	// 此处省略3个属性的get与set方法
	
    public String upload() {
        //设置文件保存的路径
        String path = ServletActionContext.getServletContext().getRealPath("/WEB-INF/upload/");

        for (int i = 0; i <uploadFileName.length ; i++) {

            File f = new File(path+"/"+uploadFileName[i]);

            try {
                FileUtils.copyFile(upload[i], f);
                System.out.println("上传成功");
            } catch (IOException e) {
                this.addActionError("上传失败");
                e.printStackTrace();
                return "upload";
            }

        }

        return null;
    }

限制文件的大小和类型

在struts.xml文件中设置常量

  • maximumSize:上传文件的最大长度,默认为2MB
  • allowedTypes:允许上传文件的类型,各类型以逗号分隔
  • allowedExtensions:允许上传文件的扩展名,个扩展名之间以逗号分隔
<!--设置文件上传允许最大值为10MB(设置全局)-->
<constant name="struts.multipart.maxSize" value="10485760"></constant>

<!-- 在<action>中设置拦截器 -->
<interceptor-ref name="defaultStack">
<param name="fileUpload.maximumSize">4194304</param>
<param name="fileUpload.allowedTypes">
	text/plain,application/msword
</param>

<param name="allowedExtensions">
.txt,.png,.jpg
</param>
</interceptor-ref>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值