struts2上传和下载核心配置

本文介绍如何使用Struts框架实现文件的上传与下载功能,包括表单配置、Action配置及错误处理等内容。

表单的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进行编码转换哦 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值