struts2文件下载时,下载文件和保存文件名都为中文时解决方案
2013-01-05 12:38
295 查看
场景:用struts2实现文件的下载,服务器上的文件名为中文,下载到本地保存的文件名也是中文,这时会出现乱码。解决方案如下:
package pic;
public class PicAction extends BaseAction {
//下载参数
private String downloadFilePath;
private String downloadFileName;
public String downloadFilesByBreakPoint() {
return "success";
}
public InputStream getInputStream() throws Exception {
downloadFilePath = new String(downloadFilePath.getBytes("iso-8859-1")); //解决下载的文件为中文问题
File downloadFile = new File(Global.FIlE_ROOT+downloadFilePath);
//解决下载到本地保存的文件名为中文问题
downloadFileName = new String(downloadFilePath.substring(downloadFilePath.lastIndexOf("\\")+1).getBytes(),"iso-8859-1");
return new FileInputStream(downloadFile);
}
public String getDownloadFilePath() {
return downloadFilePath;
}
public void setDownloadFilePath(String downloadFilePath) {
this.downloadFilePath = downloadFilePath;
}
public String getDownloadFileName() {
return downloadFileName;
}
public void setDownloadFileName(String downloadFileName) throws Exception{
this.downloadFileName = new String(downloadFileName.getBytes("ISO-8859-1"),"GBK");;
}
}
struts2的配置文件如下:
<action name="downloadFilesByBreakPoint" method="downloadFilesByBreakPoint" class="pic.PicAction">
<result name="success" type="stream">
<!-- 解决保存到本地的文件名为中文问题 -->
<param name="contentType">charset=iso-8859-1</param>
<!-- inputName默认值是inputStream,如果action中用于读取下载文件内容的属性名是inputStream,那么可以省略这个参数 -->
<param name="inputName">inputStream</param>
<!--动态获取文件名,从Action中的取得filename-->
<param name="contentDisposition">
attachment;filename=${downloadFileName}
</param>
<param name="bufferSize">2048</param>
</result>
</action>
package pic;
public class PicAction extends BaseAction {
//下载参数
private String downloadFilePath;
private String downloadFileName;
public String downloadFilesByBreakPoint() {
return "success";
}
public InputStream getInputStream() throws Exception {
downloadFilePath = new String(downloadFilePath.getBytes("iso-8859-1")); //解决下载的文件为中文问题
File downloadFile = new File(Global.FIlE_ROOT+downloadFilePath);
//解决下载到本地保存的文件名为中文问题
downloadFileName = new String(downloadFilePath.substring(downloadFilePath.lastIndexOf("\\")+1).getBytes(),"iso-8859-1");
return new FileInputStream(downloadFile);
}
public String getDownloadFilePath() {
return downloadFilePath;
}
public void setDownloadFilePath(String downloadFilePath) {
this.downloadFilePath = downloadFilePath;
}
public String getDownloadFileName() {
return downloadFileName;
}
public void setDownloadFileName(String downloadFileName) throws Exception{
this.downloadFileName = new String(downloadFileName.getBytes("ISO-8859-1"),"GBK");;
}
}
struts2的配置文件如下:
<action name="downloadFilesByBreakPoint" method="downloadFilesByBreakPoint" class="pic.PicAction">
<result name="success" type="stream">
<!-- 解决保存到本地的文件名为中文问题 -->
<param name="contentType">charset=iso-8859-1</param>
<!-- inputName默认值是inputStream,如果action中用于读取下载文件内容的属性名是inputStream,那么可以省略这个参数 -->
<param name="inputName">inputStream</param>
<!--动态获取文件名,从Action中的取得filename-->
<param name="contentDisposition">
attachment;filename=${downloadFileName}
</param>
<param name="bufferSize">2048</param>
</result>
</action>
相关文章推荐
- struts2 文件下载中文乱码问题解决方案
- Struts2文件上传与下载中的中文乱码问题解决方案
- Struts2文件下载中文乱码解决方案
- Struts2 文件下载及中文乱码问题的解决方案
- Struts2 文件下载及中文乱码问题的解决方案
- Struts2 文件下载及中文乱码问题的解决方案(下载各种格式文件)
- struts2文件下载的中文名解决方案
- Struts2 文件下载 (解决了中文文件名)
- struts2 实现中文文件名的文件下载
- struts2 文件下载方式 此法解决下载中文文件问题。不错
- JSP中下载中文文件报错解决方案
- js url传值中文乱码之解决方案(文件下载乱码问题)
- JAVA文件下载中文名称乱码解决方案
- 下载文件时保存中文名称有乱码
- Struts2实现文件下载功能代码分享(文件名中文转码)
- struts2文件下载功能实现(文件名中文转码)
- struts2 下载文件,下载弹出框,文件名中文乱码
- 使用struts2实现下载功能遇到的文件中文问题
- struts2 文件下载方式 此法解决下载中文文件问题
- JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案