博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2文件下载
阅读量:6820 次
发布时间:2019-06-26

本文共 2722 字,大约阅读时间需要 9 分钟。

hot3.png

一个简单的利用struts2做文件下载的demo…… 

首先配好struts:

web.xml 

 
 
 
index.jsp
 
 
 
struts2
 
org.apache.struts2.dispatcher.FilterDispatcher
 
 
 
struts2
 
/*
 
 

struts.xml——这里是重点 

 
    
        
    
        
    
    
    
    
    
    
    
    
    
            
        
        
        
    
    
    
result               
    
    
result                    
    
    
result                 
       
       
image/bmp,image/x-png,image/gif,image/jpeg        
2M                
text/html
text/html                           
    
    
result                            
        
        ‍
                
    
    
              
      
             
application/octet-stream;charset=ISO8859-1                  
             
inputStream          
         
 
             
attachment;filename="${fileName}"                  
             
50000000              

1)  <param name="contentDisposition">attachment;fileName="${fileName}"</param>

     contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择

2)  attachment :下载时会打开下载框

3)  fileName="${fileName}" :在这定义的名字是一个动态的,该名字是显示在下载框上的文件名字

4.<param name="inputName">downloadFile</param>,这个downloadFile名字要和FileDownload.java类中的getDownloadFile()方法名去掉get 一致

当result为stream类型时,struts2会自动根据你配置好的参数下载文件。 

接着在DownloadAction里新建download方法,

package com.xhgjky.ssh.action; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownloadAction extends ActionSupport {
private static final long serialVersionUID = 1L; private String fileName;  public String getFileName() {
return ServletActionContext.getRequest().getParameter("fileName"); } public void setFileName(String fileName) {
try {
fileName = new String(fileName.getBytes("iso-8859-1"), "utf-8"); //对接受的中文文件名进行转码,否则找不到文件所在的输出流 } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block e.printStackTrace(); System.out.println("转码失败!!"); } this.fileName = fileName; } public InputStream getInputStream() {
fileName = "哈.xls"; System.out.println(fileName); InputStream is=ServletActionContext.getServletContext().getResourceAsStream("/Html/upload/" + fileName); System.out.println("is:"+is); return is; } public String download(){
System.out.println("download.."); return SUCCESS; } }

* 注意使用getResourceAsStream方法时,文件路径必须是以“/”开头,且是相对路径。这个路径是相对于项目根目录的。 

* 可以用return new FileInputStream(fileName)的方法来得到绝对路径的文件。 
在WEB-INF下随意丢一个test.txt,部署好后进入浏览器,输入tomcat地址/项目路径/download.action?fileName=test.txt即可下载到该文件。 

转载于:https://my.oschina.net/yongqingfan/blog/535665

你可能感兴趣的文章
AWS上的MongoDB:如果为你的MongoDB服务器选择正确的EC2实例类型?
查看>>
OSPF和RIP综合实验 有点难度!
查看>>
js实现tooltips
查看>>
轻松拥有个性化Windows安装光盘
查看>>
如何彻底删除已经损坏或不用的DC
查看>>
Windows 2008 R2 安装 SQL Server 2008群集故障的解决
查看>>
Hyper-V 2016 系列教程22 比较 Windows Server 2016 服务器不同版本的特征
查看>>
SQL Server 进阶 01 数据库的设计
查看>>
.NET多线程编程(4)——线程池
查看>>
Redis 参数
查看>>
[windows server 2008 站点系列一]AD的站点建立与子网的管理
查看>>
你不得不知道的Visual Studio 2012(2)- 全新调试功能
查看>>
GDB技巧:使用checkpoint解决难以复现的Bug
查看>>
C++字符换行 .
查看>>
《矩阵》——稀疏矩阵(Java)
查看>>
彻底学会使用epoll(二)——ET和LT的触发方式
查看>>
Mocha BSM产品亮点——策略管理
查看>>
开发可统计单词个数的Android驱动程序(1)
查看>>
ASP.NET MVC 5-开始MVC5之旅
查看>>
Resin搭建JSP环境
查看>>