文件上传与下载概述

Posted tonghun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传与下载概述相关的知识,希望对你有一定的参考价值。

 

一 概述

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     }

 

以上是关于文件上传与下载概述的主要内容,如果未能解决你的问题,请参考以下文章

文件上传与下载

JavaWeb之上传与下载

利用Socket和IO流实现文件的上传与下载

大文件上传下载实现思路,分片断点续传代码实现,以及webUpload组件

android+spring boot 选择,上传,下载文件

java Ftp上传创建多层文件的代码片段