今天碰到一个关于servlet下载时,如果文件名称为中文,那么下载下来的文件名就会出点问题,今天似乎解决了这个问题,记录下:
package com.test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse response)
throws ServletException, IOException {
response.setContentLength(22);
response.setContentType("application/x-download");
String filename = "测试中文.java";
filename = new String(filename.getBytes("GBK"),"ISO8859_1");
response.setHeader("Content-disposition", "attachment; filename=\"" + filename + "\"");
try{
OutputStream os = response.getOutputStream();
FileInputStream fis = new FileInputStream("D:\\Documents\\App.java");
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0) {
os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}