struts2文件上传和下载

上传一个文件

1. 通过HTML表单上传文件时, 需要将表单的enctype属性设置为multipart/form-data, method属性设置为post. 

jsp页面代码:


2. 在Action类中定义一下3个成员变量, 并为其提供getter和setter方法:


以上3个成员变量的名称不能随意更改, private File strutsUpload变量的名称必须和jsp中上传文件标签中的name属性的值一致. 而private String strutsUploadContentType变量的名称必须为"上传文件的名称+ContentType", private String strutsUploadFileName变量的名称必须为"上传文件的名称+FileName".

3. 在Action类中定义业务方法. 完整的Action类可以如下:


4. 在struts.xml文件中配置uploadFile拦截器的属性:


多文件上传

多文件上传与单文件上传类似, 只有jsp表单和Action类的代码有所不同.


注意每个文件上传标签的name属性需要一致.

Action类的变化:


多文件上传时, Action中的3个成员变量的名称需要遵循与单文件上传时相同的规则. 此时3个成员变量均为数组.

3. 在struts.xml文件中配置uploadFile拦截器的属性, 同上.

 

错误显示

当文件上传过程中出错时, 如果定义了错误显示页面, 将跳转到指定的页面, 并输出错误信息.

1. 在action标签下定义如下子标签:

<!-- 定义上传出错要转向的页面 -->

<result name="input">/upload/error.jsp</result>

2. /upload/error.jsp页面可以使用<s:fielderror/>标签输出错误信息.

前提是已经使用taglib指令导入了struts标签库:

<%@ taglib uri="/struts-tags" prefix="s"%>

3. 默认的错误信息为英文, 在struts2-core-2.x.x.x.jar\org\apache\struts2\struts-messages.properties文件中定义:

struts.messages.error.uploading=Error uploading: {0}

struts.messages.error.file.too.large=File too large: {0} "{1}" "{2}" {3}

struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}

struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}

{0}:<input type=“file” name=“uploadImage”>中name属性的值

{1}:上传文件的名称

{2}:上传文件保存到临时目录的名称

{3}:上传文件的类型(对struts.messages.error.file.too.large是上传文件的大小)

我们可以在Action的统计目录下创建一个fileuploadmessage.properties文件, 文件名没有要求, 但必须是properties文件, 在其中输入:

struts.messages.error.uploading=上传错误: {0}

struts.messages.error.file.too.large=文件太大: {0} "{1}" "{2}" {3}

struts.messages.error.content.type.not.allowed=不支持的文件类型: {0} "{1}" "{2}" {3}

struts.messages.error.file.extension.not.allowed=不支持的文件扩展名: {0} "{1}" "{2}" {3}

使用jdk目录下的native2ascii工具将中文转为unicode编码.

接下来需要在struts.xml文件中加载自定义的资源文件:

<constant name="struts.custom.i18n.resources" value="cn.xing.upload.fileuploadmessage"></constant>

你就可以看到效果了!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值