主题:[求助]servlet实现文件下载的中文乱码问题
最近我为我的小站添加了一个功能模块, 实现上传下载,
上传用fileupload组件实现,已经弄好了,
下载用servlet,但是有问题,就是文件名中如果含有中文字符的话,会出现乱码问题,甚至不能下载,如果不含中文字符,则正常,在网上找了两天了,好像都是解释其中的原理,没有好的实际的解决办法,不知道大家遇到过这种问题没有,
下面是servlet的源码,大家帮我看下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//文件名从请求的jsp页面获得
String filename = request.getParameter("name");
response.setContentType("application/x-msdownload;charset=GBK");
//设置Content-Disposition头的值为"attachment;filename=文件名"
response.addHeader("Content-Disposition", "attachment;filename="+filename);
//从response中获得一个ServletOutputStream
ServletOutputStream sops = response.getOutputStream();
//String s = getServletContext().getRealPath
String fileDir = "F:/临时文件/myclass/";
File Dir = new File(fileDir);
File file = new File(Dir,filename);
InputStream ips = new FileInputStream(file);
byte[] content = new byte[(int) file.length()];
ips.read(content);
//将文件内容写入到输出流中发送给客户端
sops.write(content);
ips.close();
sops.close();
}
上传用fileupload组件实现,已经弄好了,
下载用servlet,但是有问题,就是文件名中如果含有中文字符的话,会出现乱码问题,甚至不能下载,如果不含中文字符,则正常,在网上找了两天了,好像都是解释其中的原理,没有好的实际的解决办法,不知道大家遇到过这种问题没有,
下面是servlet的源码,大家帮我看下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//文件名从请求的jsp页面获得
String filename = request.getParameter("name");
response.setContentType("application/x-msdownload;charset=GBK");
//设置Content-Disposition头的值为"attachment;filename=文件名"
response.addHeader("Content-Disposition", "attachment;filename="+filename);
//从response中获得一个ServletOutputStream
ServletOutputStream sops = response.getOutputStream();
//String s = getServletContext().getRealPath
String fileDir = "F:/临时文件/myclass/";
File Dir = new File(fileDir);
File file = new File(Dir,filename);
InputStream ips = new FileInputStream(file);
byte[] content = new byte[(int) file.length()];
ips.read(content);
//将文件内容写入到输出流中发送给客户端
sops.write(content);
ips.close();
sops.close();
}