从本地上传到服务器上,再下载下来打开就成了乱码。本地上传的文档没有问题。

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上再解压出来都是乱码?

git怎么从远程仓库拉取到本地

web项目从如何本地上传到服务器再从网页直接预览word文档

github下载项目代码到本地,不能运行 本地改完代码 再上传

java从数据库里读文件变乱码