Struts2 文件下载

时间:2021-07-28 13:39:07

使用Struts2做一个简单的文件下载。

首先,导包,写配置文件就不说了。

进入主题。

文件下载操作类:FileDownload.java

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileDownload extends ActionSupport{
 
 private InputStream inputStream;
 private String fileName;

public String getFileName() {
  return fileName;
 }

public void setFileName(String fileName) {
  this.fileName = fileName;
 }

public InputStream getInputStream() {
  fileName="144003645679.jpg";
  return ServletActionContext.getServletContext().getResourceAsStream("/upload/144003645679.jpg");
  
 }
 
 public String execute() {
  return SUCCESS;
 }
}

Struts.xml文件

<package name="fileaction" namespace="/" extends="struts-default">

<action name="filedownload" class="com.dkx.action.FileDownload" >
    <result name="success" type="stream">
    <!-- contentType 指定下载文件的文件类型 —— application/octet-stream 表示无限制   -->
               <param name="contentType">text/plain</param>
              
               <!-- contentDisposition 使用经过转码的文件名作为下载文件名 ——
                 默认格式是attachment;filename="${fileName}",
                 将调用该Action中的getFileName方法。 --> 
                
               <param name="contentDisposition">attachment;fileName="${fileName}"</param> 
              
               <!-- inputName 流对象名 ——
                比如这里写inputStream,它就会自动去找Action中的getInputStream方法。 -->
              
               <param name="inputName">inputStream</param> 
              
               <!-- 指定下载文件的缓冲大小 -->
              
               <param name="bufferSize">50000000</param>
         </result> 
    </action>
   </package>

Jsp页面文件:

<a href="${basePath }filedownload.action">下载</a>

至此大功告成。点击下载。。