表单的entype属性:
<form action="upload.action" method="POST" enctype="multipart/form-data">
action中接受文件的属性:
private File upload;
// 上传文件名
private String uploadFileName;
// 上传文件类型
private String uploadContentType;
注意:如果是多文件上传上面的属性就是list或者数组类型的。
<!--处理上传的Action配置准许类型和单个文件大小-->
<action name="upload" class="com.example.struts.action.UploadAction">
<result name="input">/jsp/upload.jsp</result>
<result name="success">/jsp/result.jsp</result>
<!--显示配置文件上传拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 配置允许上传的文件类型,多个用","分隔 -->
<param name ="allowedTypes">text/plain,application/xml</param>
<!-- 配置允许上传的文件大小,单位字节 -->
<param name="maximumSize">102400</param>
</interceptor-ref >
<interceptor-ref name="defaultStack"></interceptor-ref >
</action>
<!-- 下载文件的Action定义 -->
<action name="download" class="com.example.struts.action.DownLoadAction">
<!-- 设置文件名参数,由页面上传入 -->
<param name="fileName"></param>
<result name="success" type="stream">
<!-- 下载文件类型定义 -->
<param name="contentType">text/plain</param>
<!-- 下载文件处理方法 -->
<param name="contentDisposition">
filename="FileName"
</param>
<!-- 下载文件输出流定义 -->
<param name="inputName">downloadFile</param>
</result>
</action>
在处理下载的Action中核心就是提供一个返回指向资源的输入流的方法即可,方法的名字“downloadFile”和配置文件中的指定的名字一致即可。
如果上传文件失败,系统返回到input对应的页面,要在input对应的页面输出文件过滤失败信息,可以在input对应的页面中增加 <s:fielderror/>来显示错误信息。显然,这样的提示不太友好,应用使用国际化信息。在国际化资源文件中添加如下三句:
#更改上传文件类型不允许的提示信息
struts.messages.error.content.type.not.allowed=文件上传失败:你要上传的文件类型不允许
#更改上传文件太大的提示信息
struts.messages.error.file.too.large=文件上传失败:你要上传的文件太大
#文件上传其它错误信息
struts.messages.error.uploading=文件上传失败:发生内部错误
别忘了要用native2ascii.exe进行编码转换哦 !
本文介绍如何使用Struts框架实现文件的上传与下载功能,包括表单配置、Action配置及错误处理等内容。

1458

被折叠的 条评论
为什么被折叠?



