struts2之文件下载

Struts2的文件下载需要将contentType、inputStream、contentDisposition三个参数设定好即可,具体代码如下


Action代码:

package com.maty.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.utils.FileUtils;

public class FileDownloadAction extends ActionSupport
{
	//文件下载主要需要靠stream这个结果集类型来完成
	private String contentType;  //文件的mime类型,默认为text/plain;
	private InputStream inputStream;	//inputstream流的名称
	private String contentDisposition;
	
	//第一步:获取需要下载的文件路径
	String path = "d://";
	String filename = "你好.txt";
	
	//获取文件类型
	
	
	
	@Override
	public String execute() throws Exception
	{
		//1.设定下载文件的路径
		String path="d://";
		String filename = "你好.txt";
		
		//2.获取文件类型
		contentType = ServletActionContext.getServletContext().getMimeType(filename);
		//3.获取inputstream
		inputStream = new FileInputStream(new File(path+filename));
		
		//如果filename为中文名称,则需要将中文文件名转码
		filename = FileUtils.encodeDownloadFilename(filename, ServletActionContext.getRequest().getHeader("user-agent"));
		
		
		
		//4.设定contentDisposition参数
		contentDisposition = "attachment;filename="+filename;
		
		
		//将这三个参数放入到action的值栈中
		ActionContext.getContext().put("contentType", contentType);
		ActionContext.getContext().put("inputStream", inputStream);
		ActionContext.getContext().put("contentDisposition", contentDisposition);
		
		return SUCCESS;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值