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文件下载及文件名中文问题

1. struts2配置文件: testStream application/octet-stream;charset=GBK

解决struts文件下载中文名不显示问题

获得文件名的java源代码如下: public String getFilename() throws UnsupportedEncodingException { this.filena...

【腾讯开源】LivePool:基于Node.js的跨平台Web抓包替换工具

【腾讯开源】LivePool:基于Node.js的跨平台Web抓包替换工具 2014-07-15 11:04腾讯全端 AlloyTeam 团队 Blog作者 TAT.Rehorn  1...
  • liranke
  • liranke
  • 2014年07月17日 16:24
  • 1835

struts2显示列表序号的办法

http://blog.knowsky.com/226680.htm 有的时候需要在页面上进行计算,比如要显示十条数据并且十条数据前要有显示123456……的序号,解决这个问题有两种办法。第一种...
  • myinc
  • myinc
  • 2015年01月11日 08:06
  • 1224

Struts2 .apk 文件下载及解决中文文件名乱码问题(转)

转载自:http://www.cnblogs.com/yuanhui69/p/4118781.html 1、Tomcat服务器不能下载 .apk类型文件 Android的APK安装包不...

Struts2文件上传与下载中的中文乱码问题解决方案

一.、乱码问题概述:在实际项目与应用中,文件上传和下载的对象大多是中文文档,因此在Struts的文件上传和下载功能实现中,中文乱码是一个不得不面对的问题。其中的乱码问题分为两类: 1、jsp页面中...

Struts2文件下载时,中文文件名和chorm不兼容问题

以下内容为转载,如有冒犯,请见谅。 经过本人实验该方法非常简单: Struts2文件下载时,如果所下载的文件名是中文时,就会出现乱码。 解决办法如下: 步奏一:修改fileName属性的set方法 p...
  • tzh476
  • tzh476
  • 2015年12月04日 23:39
  • 651

struts2文件下载中文乱码问题彻底解决

原始的代码是这样的: XML: application/octet-stream downloadFile attachmen...
  • dudfur
  • dudfur
  • 2013年12月07日 01:16
  • 525

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

1.上传界面jsp enctype属性一定要写成multipart/form-data不然就会以二进制文本上传到服务器端,使用 get/post方法对中文编码转码有影响  [htm...
  • pql925
  • pql925
  • 2016年09月29日 17:25
  • 653
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2 下载文件不能显示中文名字的问题
举报原因:
原因补充:

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