struts2 下载文件不能显示中文名字的问题

原创 2015年07月10日 15:18:54

最近在看Struts 2 的知识,遇到一个下载不能显示中文名字的问题,查找了网上的的内容,最终得到了解决。


Struts.xml

<action name="download" class="com.jia.action.FileDownloadAction">
       <result name="success" type="stream">
          <param name="contentType">${contentType}</param>
          <param name="inputName">targetFile</param>
          <param name="contentDisposition">filename=${downFileName}</param>
          <param name="bufferSize">4096</param> 
       </result>
    
    
    </action>

action:

package com.jia.action;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileDownloadAction extends ActionSupport {

	private String inputPath;
	private String contentType;
	private String downFileName;
	

	public String getInputPath() {
		return inputPath;
	}

	public void setInputPath(String inputPath) throws Exception {
        /*
         * 必须转码,否则找不到路径
         */
		this.inputPath = new String(inputPath.getBytes("iso-8859-1"),"utf-8");
//	    this.inputPath=inputPath;
	}

	public String getContentType() {
		return contentType;
	}

	public void setContentType(String contentType) {
		this.contentType = contentType;
	}

	public String getDownFileName() {
		return downFileName;
	}


	public void setDownFileName(String downFileName) throws Exception {
		
		this.downFileName =  new String(downFileName.getBytes("iso-8859-1"),"utf-8");
	}

	public InputStream getTargetFile() throws Exception{
		//转换格式,否则中文不能显示。
		this.downFileName=new String(downFileName.getBytes(),"iso-8859-1");
		return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
	}
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		System.err.println(downFileName);
		return super.execute();
	}

	public FileDownloadAction() {
		// TODO Auto-generated constructor stub
	}

}


 


struts2文件下载的中文名解决方案

找了很多资料,最后从论坛上找到的解决方案,这里贴一下几处关键代码 application/octet-stream;charset=ISO8859-1 //注意这里的ch...
  • u013068118
  • u013068118
  • 2015年04月01日 21:55
  • 1148

Struts2文件下载遇到中文乱码、中文丢失的解决方法

Struts2文件下载遇到中文乱码、中文丢失的解决方法
  • qq_36411874
  • qq_36411874
  • 2017年03月12日 19:37
  • 419

struts2中文件下载以及中文乱码

昨天在试着做一个使用struts2文件下载的功能,基本上没有考虑到乱码的问题,因为当时文件都是以数字进行命名的,下载过程中没有出现问题。 下面给出代码, Action类, public clas...
  • wojiaohuangyu
  • wojiaohuangyu
  • 2016年05月30日 17:36
  • 2017

struts2文件下载及文件名中文问题

1. struts2配置文件: testStream application/octet-stream;charset=GBK
  • ChiXueZhiHun
  • ChiXueZhiHun
  • 2015年12月07日 13:48
  • 1302

Java文件下载中文名不显示&乱码

Java开发中,文件上传下载是很常用的功能。实际开发中遇到了中文名不显示的问题,一开始以为是后台代码的原因,网上查了一些资料,原来是Header中只支持ASCII,传输的文件名必须是ASCII。...
  • RickyIT
  • RickyIT
  • 2016年12月21日 17:49
  • 3331

struts2 文件下载方式 此法解决下载中文文件问题

最近用到了struts2的文件下载,找了些网上关于下载的文章,摘录如下: 原文:http://www.blogjava.net/beansoft/archive/2008/03/03/183468...
  • coollmk
  • coollmk
  • 2014年12月08日 17:54
  • 453

java 文件下载 文件名称中文不显示

String fileName = “文件名称.doc” try { String fileName = new String(downFileName.getBytes(), “...
  • zhlin110228323
  • zhlin110228323
  • 2017年02月08日 13:06
  • 2186

文件下载中文文件名不显示

使用response.setHeader("Content-Disposition","attachment;filename="+fName)下载文件,中文文件名无法显示的问题 ...
  • wwd0501
  • wwd0501
  • 2015年11月17日 17:49
  • 5219

Struts 2中实现文件下载(修正中文问题)

在BlogJava上已经有一位作者阐述了文件上传的问题,地址是在Struts 2中实现文件上传,因此我就不再讨论那个话题了。我今天简单介绍一下Struts 2的文件下载问题。 我们的项目名为 stru...
  • Arthur0088
  • Arthur0088
  • 2010年06月01日 14:01
  • 4315

struts2文件上传下载(含中文编码问题)

struts 2文件上传下载,遇到许多问题,知道很多东西特来分享 2.文件上传 public class FileUpload...
  • zhituji
  • zhituji
  • 2016年02月10日 10:14
  • 572
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2 下载文件不能显示中文名字的问题
举报原因:
原因补充:

(最多只允许输入30个字)