打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
struts2实现文件下载

配置stream类型的结果需要指定如下属性:

  •   contentType :指定被下载文件的文件类型
  •   inputName   :指定被下载文件的入口输入流
  •   contentDisposition : 指定被下载文件名
  •   bufferSize  :指定下载文件时的缓冲大小
   因为stream结果类型的逻辑视图是返回给客户端一个输入流,因此无需指定location属性。只需指定inputName属性即可,该属性执行被下载文件。

 第一步:struts.xml配置:

 <?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>
   
    <!-- 指定国际化资源文件的baseName为uploadFile-->
    <constant name="struts.custom.i18n.resources" value="uploadFile"></constant>
    <!-- 设置该应用使用的编码集为utf-8 -->
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    
<package name="default" namespace="/" extends="struts-default" >
        <!-- 连接进入上传页面 -->
        <action name="uploadFile">
          <result>/WEB-INF/jsp/upload.jsp</result>
        </action>
        
        <!-- 下载文件的Action -->
        <action name="down" class="org.struts.AuthorityDownAction">
          <!-- 指定被下载资源的位置 -->
          <param name="inputPath">\images\c1.gif</param>
          
          <!-- 配置结果类型为stream的结果 -->
          <result name="success" type="stream">
             <!-- 指定下载文件的类型 -->
             <param name="contentType">image/gif</param>
             <!-- 指定下载文件的位置 -->
             <param name="inputName">targetFile</param>
             <param name="contentDisposition">attachement;filename="struts.gif"</param>
             
             <!-- 指定下载文件的缓冲大小 -->
             <param name="bufferSize">50000000</param>
          </result>
        </action>

</package>
</struts>
//struts.xml配置中红色部分是可以更改部分。其他部分不能更改

第二步:实现下载的Action代码:

package org.struts;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class AuthorityDownAction implements Action{

//该属性石依赖注入的属性,可以在配置文件中动态指定该属性
private String inputPath;

public void setInputPath(String inputPath) {
   this.inputPath = inputPath;
}

 // @Author Bob
 //下载用的Action应该返回一个InputStream实例
 //该方法对应在result里的inputName属性值为targetFile

public InputStream getTargetFile() throws Exception{

   InputStream in=ServletActionContext.getServletContext().getResourceAsStream(inputPath);
   return in;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}

}




第三步:下载页面代码:

       下载:<a href="down.action">图片下载</a>


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
struts2 文件下载示例1_普通下载
struts实现文件下载
Struts2学习笔记(五):Action属性注入值和指定Struts 2处理的请求
Struts2上传文件
struts2文件上传
struts2与json的整合
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服