W e S D
0 1

[JavaWeb基础] 010.Struts2 下载文件

在web开发中,我们经常会有文件的上传下载功能,上一篇的介绍中我们讲解了上传功能,那么这次我们来讲讲下载功能

1.首先我们需要有一个用于处理下载的测试页面,也就是jsp

1
2
3
4
5
<body>
    <h2>文件下载内容:</h2>
    <br/>
    通讯录.xls:<a href="FileDownload.action">点击下载</a><br/>
</body>

2.我们只需要编写最简单的测试代码,那么后面我们就需要有一个接收请求的Action,(需要注意文件名称中文乱码的处理)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.babybus.sdteam.action;
 
import java.io.InputStream;
 
 
import org.apache.struts2.ServletActionContext;
 
 
import com.opensymphony.xwork2.ActionSupport;
 
// 文件下载
public class FileDownloadAction extends ActionSupport{
     
    private int number ;
 
    private String fileName;
 
    public int getNumber() {
        return number;
    }
 
    public void setNumber(int number) {
        this.number = number;
    }
     
    public String getFileName() {
        return fileName;
    }
 
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
 
    // 返回一个输入流,作为一个客户端来说是一个输入流,但对于服务器端是一个 输出流
    public InputStream getDownloadFile() throws Exception
    {
        this.fileName = "通讯录.xls" ;
        // 解解乱码
        this.fileName = new String(this.fileName.getBytes("GBK"),"ISO-8859-1");
        return ServletActionContext.getServletContext().getResourceAsStream("upload/通讯录.xls") ;
    }
     
    @Override
    public String execute() throws Exception {
         
        return SUCCESS;
    }
 
}

3.最后我们需要配置一个struts.xml.需要注意以下几项

  1)结果类型必须要写成 type="stream"  ,与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult

  2)<param name="contentDisposition">attachment;fileName="${fileName}"</param>  contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择

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

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

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

1
2
3
4
5
6
7
8
<action name="FileDownload" class="com.babybus.sdteam.action.FileDownloadAction">
    <result name="success" type="stream">
        <param name="contentType">text/plain</param>
        <param name="contentDisposition">attachment;fileName="${fileName}"</param>
        <param name="inputName">downloadFile</param>
        <param name="bufferSize">1024</param>
    </result>
</action>

配置完成后我们就实现了Struts2的简单文件下载功能。

 

 

结语

  • 受益,掌握了Struts2 下载文件

 

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4718695.html

 

 

 

 

 

posted @   SD.Team  阅读(440)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示