2 chaixw007 chaixw007 于 2017.09.04 10:25 提问

springmvc 下载文件 弹出框乱码什么原因啊

图片说明哪些原因啊 ,
烦死了

3个回答

qq_38005982
qq_38005982   2017.09.04 10:26

你的编码格式改了么?可能是因为编码格式的原因

chaixw007
chaixw007 改了呀
3 个月之前 回复
chaixw007
chaixw007   2017.09.04 10:30

@RequestMapping("/downFile")
public ModelAndView downFile(HttpServletRequest request, HttpServletResponse response,String fileSaveRootPath,String fileName) {
try {

response.reset();
response.setHeader("Content-disposition", "attachment; filename="+fileName);// 设定输出文件头

response.setContentType("text/x-plain");
response.setCharacterEncoding("utf-8");
fileName = new String(fileName.getBytes("iso8859-1"), "UTF-8");

// 得到要下载的文件

File file = new File(fileSaveRootPath + "\" + fileName);

// 如果文件不存在

if (!file.exists()) {

request.setAttribute("message", "您要下载的资源已被删除!!");

System.out.println("您要下载的资源已被删除!!");

return null;

}

// 处理文件名

String realname = fileName.substring(fileName.indexOf("_") + 1);

// 设置响应头,控制浏览器下载该文件

// response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
// 读取要下载的文件,保存到文件输入流

FileInputStream in = new FileInputStream(fileSaveRootPath + "\" + fileName);

// 创建输出流

OutputStream out = response.getOutputStream();

// 创建缓冲区

byte buffer[] = new byte[1024];

int len = 0;

// 循环将输入流中的内容读取到缓冲区当中

while ((len = in.read(buffer)) > 0) {

// 输出缓冲区的内容到浏览器,实现文件下载

out.write(buffer, 0, len);

}

// 关闭文件输入流

in.close();

// 关闭输出流

out.close();

} catch (Exception e) {

    }  
    return null;

}
qq_38005982
qq_38005982 。。。。。我除了看懂了第一行剩下的,都蒙圈状态,不太会看这个,你看一下JSP的编码格式,如果也是UTF-8,那我就不会了,你可以等等大神,不过这代码我可以留着回头自己玩玩
3 个月之前 回复
q690080900
q690080900   2017.09.04 10:54

你说的弹出框乱码 具体指的 文件名乱码 还是下载的文件内容乱码 还是返回路径乱码

q690080900
q690080900 还有 你那个filename 应该这么写 fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片