2021年7月27日
Author:Exchanges
Version:9.0.2
文件上传和下载一、引言1.1 场景二、 文件上传2.1 概念2.2 文件上传实现步骤2.2.1引入jar包2.2.2 提交数据格式2.2.3 编写上传的Html页面2.2.4编写上传的Servlet2.3 @MultipartConfig详解三、 文件下载3.1 概念3.2 下载
一、引言
1.1 场景
在项目中,文件的上传和下载是常见的功能。很多程序或者软件中都经常使用到文件的上传和下载。
邮箱中有附件的上传和下载
OA办公系统中有附件材料的上传
二、 文件上传
2.1 概念
当用户在前端页面点击文件上传后,用户上传的文件数据提交给服务器端,实现保存。
2.2 文件上传实现步骤
2.2.1引入jar包
jsp-api.jar
servlet-api.jar
2.2.2 提交数据格式
提供form表单,method必须是post。因为post请求无数据限制。
表单的enctype属性值必须为multipart/form-data。
<form enctype="multipart/form-data" method="post"></form>
2.2.3 编写上传的Html页面
提供file表单组件,提供给用户上传文件的Html页面
2.2.4编写上传的Servlet
在 Servlet 3.0 及其以上版本的容器中进行服务器端文件上传的编程,是围绕着注解类型 MultipartConfig 和 javax. servlet.http.Part 接口进行的。处理已上传文件的 Servlet 必须以@MultipartConfig 进行注解。
package com.qf.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
2.3 @MultipartConfig详解
| 属性名 | 类型 | 是否可选 | 描述 |
|---|---|---|---|
| fileSizeThreshold | int | 是 | 当数据量大于该值时,内容将被写入文件。 |
| location | String | 是 | 存放生成的文件地址。 |
| maxFileSize | long | 是 | 允许上传的文件最大值。默认值为 -1,表示没有限制。 |
| maxRequestSize | long | 是 | 针对该 multipart/form-data 请求的最大数量,默认值为 -1,表示没有限制。 |
通过request.getPart(String name)方法获取文件组件,通过uploadfile.getSubmittedFileName()获取上传文件
三、 文件下载
3.1 概念
我们可以将一些文件资源提供给用户进行下载
3.2 下载
package com.qf.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
浙公网安备 33010602011771号