日期:2014-05-17  浏览次数:20672 次

web放在linux下面,下载文件时,保存对话框中的中文会没掉?
本帖最后由 play100 于 2013-09-05 20:29:13 编辑
用struts2做的一个WEB应用,基于apache + tomcat
下载的action配置如下
<action name="download" class="fanry.action.ActionDownload">  
            <result name="success" type="stream">  
                <param name="contentType">application/octet-stream</param>  
                <param name="inputName">inputStream</param>  
                <param name="contentDisposition">attachment;filename="${fileName}"</param>  
                <param name="bufferSize">4096</param>  
            </result>  
        </action> 


在windows下面下载文件,显示的名称是正确的;
但把项目部署到linux下面后,如当下面文件名为"中国123.txt"时,网页上弹出的保存对话框里只有 "123.txt"

求帮助!!!
web?linux?下载?中文

------解决方案--------------------
/**
 * 下载文件
 * @param filePath 文件路径(物理路径)
 * @param fileName 源文件名称
 */
public void downLoadFile(String filePath, String fileName) {
File file = new File(filePath);
if (!file.exists() 
------解决方案--------------------
 file.isDirectory()) {
return;
}
InputStream input =null;
OutputStream output = null;
try {
input = new FileInputStream(file);
output = response.getOutputStream();
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
byte[] buffer = new byte[1024];
int i = 0;
while ((i = input.read(buffer)) != -1) {
output.write(buffer, 0, i);
}
} catch (Exception e) {} finally {
try {
if(null !=output) {
output.flush();
output.close();
}
if(null !=input) {
input.close();
}
} catch (Exception e) {}
}
}

下载就是response的事情,lz用这个代码试一下吧
------解决方案--------------------
引用:
/**
 * 下载文件
 * @param filePath 文件路径(物理路径)
 * @param fileName 源文件名称
 */
public void downLoadFile(String filePath, String fileName) {
F