struts2文件下载时,下载文件和保存文件名都为中文时解决方案

场景:用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>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值