文章目录
正常步骤
- 正常步骤
- 使用 commons-fileupload.jar 实现文件上传
step1 在 form 中,设置 method="post"
,设置 enctype="multipart/form-data"
。enctype 属性用于设置表单的编码方式,对于文件上传,必须设置成"multipart/form-data"。
step2 在 Servlet 类当中,不能够使用 request.getParameter()
方法来获得参数值。要使用 InputStream request.getInputStream();
分析 InputStream 来获得参数值。直接分析 InputStream 比较复杂,一般使用一些封装好的工具(比如 Apache 提供的 commons-fileupload.jar
)来获得参数值。
Maven 作为构建工具,添加依赖:
commons-fileupload
commons-fileupload
1.3.1
FileUploadServlet 的代码:
package priv.lwx.servlet.web;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
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.IOException;
import java.util.List;
import java.util.UUID;
/**
* description
*
* @author liaowenxiong
* @date 2022/2/28 19:48
*/
@WebServlet("/fileupload")
public class FileUploadServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 创建DiskFileItemFactory对象,该对象为解析器提供了缺省的配置
DiskFileItemFactory factory = new DiskFileItemFactory();
// 创建解析器
ServletFileUpload sfu = new ServletFileUpload(factory);
// 使用解析器解析
try {
List items = sfu.parseRequest(req);
// 遍历集合
for (int i = 0; i
username:
选择一个文件: