从本地上传到服务器上,再下载下来打开就成了乱码。本地上传的文档没有问题。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从本地上传到服务器上,再下载下来打开就成了乱码。本地上传的文档没有问题。相关的知识,希望对你有一定的参考价值。
换个下载方式试试。比如,您原来用迅雷下载,点击下载时,在弹出来的迅雷下载窗口后,别点开始下载,而点左下角的“用IE下载”。 参考技术A 重新建个文本文档
把要传的文件内容复制到上
让后保存接着传 参考技术B 用IE下载,可能是上传不完全或是和您的网速有关系,用一个支持断点传续的软件试试,可以在网上找一下,希望能帮到您!
文件上传与下载概述
一 概述
1.什么是文件上传?
将本地文件保存到服务器上的过程,叫做文件上传。
2.什么是文件下载?
广义上,任何从服务器端获取数据的过程都属于文件下载,默认情况下由浏览器打开展示。狭义的文件下载,指的是将从服务器端获取的数据以附件的形式保存到本地。因此下载文件时,需要重新设定浏览器处理响应内容的方式:
response.setHeader("Content-disposition","attachment;filename=xxxxxx");
由于响应报头只支持ISO-8859-1的编码方式,如果文件名含有中文,将出现乱码,因此文件名必须转化为ISO-8859-1编码形式:
byte[] buf=filenameStr.getBytes("UTF-8");//将文件名转化为UTF-8编码系统下的字节码(工作空间采用UTF-8编码) String filename =new String(buf,"ISO-8859-1");//采用ISO-8859-1对字节码重新进行编码
二 Servlet中实现文件下载的核心代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 // TODO Auto-generated method stub 4 response.setContentType("text/html;charset=UTF-8");// 设置响应体中内容的编码方式 5 6 /* 7 * 将含有中文的文件名转化为ISO-8859-1编码形式 8 */ 9 String filenameStr = "图片A"; 10 byte[] bytes = filenameStr.getBytes("UTF-8"); 11 String filename = new String(bytes, "ISO-8859-1"); 12 13 System.out.println("filename=" + filename); 14 System.out.println("开始文件下载"); 15 16 // 设置浏览器以附件形式处理响应 17 response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".jpg"); 18 19 InputStream is = getServletContext().getResourceAsStream("/Files/a.jpg");// 以输入流形式获取上传文件 20 ServletOutputStream os = response.getOutputStream();// 获取指向客户端的输出流,按照客户端指定路径输出, 21 22 /* 23 * 输入流与输出流结合,先获取文件内容,再将内容输出 24 */ 25 int len = -1; 26 byte[] buf = new byte[1024]; 27 while ((len = is.read(buf)) != -1) { 28 os.write(buf); 29 } 30 os.close(); 31 is.close(); 32 }
以上是关于从本地上传到服务器上,再下载下来打开就成了乱码。本地上传的文档没有问题。的主要内容,如果未能解决你的问题,请参考以下文章
如何解决linux上有中文命名的文件名压缩后下载到windows上再解压出来都是乱码?
如何解决linux上有中文命名的文件名压缩后下载到windows上再解压出来都是乱码?
web项目从如何本地上传到服务器再从网页直接预览word文档