Struts2 文件下载程序中,当文件名包含中文时下载出错,全为英文或数字时是正常的。

代码:文件获取路径:<ahref="<s:urlvalue='download.action'><s:paramname='fileName'value='fileFil... 代码:
文件获取路径:
<a href="<s:url value='download.action'>
<s:param name='fileName' value='fileFileName[#fn.getIndex()]'/>
</s:url>">下载</a>

下载处理:
private final static String DOWNLOADFILEPATH="/uploadfile/";
private String fileName;
public String getFileName() {
return fileName;}
public void setFileName(String fileName) {
this.fileName = fileName;
}
//从下载文件原始路径读取文件输出流
public InputStream getDownloadFile(){
return
ServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH+fileName);
}
//如果下载文件名为中文,进行字符编码转换
public String getDownloadChineseFileName(){
String downloadChineseFileName = fileName;
try{
downloadChineseFileName = new String(downloadChineseFileName.getBytes(),"ISO8859-1");
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
return downloadChineseFileName;
}
struts.xml配置
<action name="download" class="com.fileupload.action.DownLoadAction">
<!-- 设置文件名参数,由页面传入-->
<param name="fileName"></param>
<result name="success" type="stream">
<!--下载文件类型定义-->
<param name="contentType">text/plain</param>
<!--下载文件处理方法 -->
<param name="contentDisposition">
attachment;filename="${downloadChineseFileName}"</param>
<param name="inputName">downloadFile</param>
</result>
</action>

这里字符编码转换的程序段每次都没去执行,请问下要怎么处理才能去执行。
public String getDownloadChineseFileName(){
String downloadChineseFileName = fileName;
try{
downloadChineseFileName = new String(downloadChineseFileName.getBytes(),"ISO8859-1");
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
return downloadChineseFileName;
}
这一块整个没进来,是不是要在哪配个拦截器什么的?
展开
 我来答
sdu_viper
2011-04-06 · TA获得超过124个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:116万
展开全部
downloadChineseFileName = new String(downloadChineseFileName.getBytes(),"ISO8859-1");
改成
downloadChineseFileName = new String(downloadChineseFileName.getBytes(ISO8859-1),"GBK");
试试
追问
public String getDownloadChineseFileName(){
}这个方法整个没去执行,有什么解决方法吗?
追答
没看见你从哪儿调用啊
应该是你自己在下载文件之前手动调用吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式