文章目录

  • 正常步骤
  • 使用 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)来获得参数值。

使用 commons-fileupload.jar 实现文件上传

Maven 作为构建工具,添加依赖:

 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency>

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 {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 创建DiskFileItemFactory对象,该对象为解析器提供了缺省的配置DiskFileItemFactory factory = new DiskFileItemFactory();// 创建解析器ServletFileUpload sfu = new ServletFileUpload(factory);// 使用解析器解析try {List<FileItem> items = sfu.parseRequest(req);// 遍历集合for (int i = 0; i < items.size(); i++) {FileItem fileItem = items.get(i);// 读取表单域中的数据时,要区分表单域的类型if (fileItem.isFormField()) {// 普通表单域String userName = fileItem.getString();System.out.println("userName:" + userName);} else {// 文件上传表单域ServletContext sctx = getServletContext();// 获取文件上传目标目录的路径String path = sctx.getRealPath("upload");// 会在upload的前面加上部署项目的项目根路径// 这里要构造File对象,是为了判断目录upload是否存在,不存在则创建File file = new File(path);if (!file.exists()) {file.mkdir();}// 获取文件名String fileName = fileItem.getName(); // image.jpeg/*// 截取文件的扩展名,例如:.jpegfileName = fileName.substring(fileName.lastIndexOf("."));// 自定义文件名称fileName = UUID.randomUUID().toString().replace("-", "") + fileName;System.out.println("上传到服务器后的文件名称:" + fileName);*/File file1 = new File(path + File.separator + fileName);System.out.println("上传到服务器后的文件路径:" + file1);// 将数据输出到目标文件中fileItem.write(file1);}}} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}
}

页面代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body style="font-size: 30px;">
<form action="fileupload" method="post" enctype="multipart/form-data">username:<input name="userName"/><br/>选择一个文件:<input type="file" name="file"/><br/><input type="submit" value="提交"/>
</form>
</body>
</html>

Servlet文件上传功能的实现(commons-fileupload)相关推荐

  1. (8)common-upload文件上传出现org.apache.commons.fileupload.FileUploadBase$IOFileUploadException

    在使用common-upload进行文件上传时,出现了以下错误: org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: ...

  2. SpringMVC图片文件上传功能实现

    SpringMVC图片文件上传功能实现 1. 在工程依赖库下添加文件上传jar包 commons-fileupload-1.2.2.jar commons-io-2.4.jar 2.jsp页面设置fo ...

  3. SSM开发书评网29:后台二:wangEditor图片上传;(主要内容是【wangEditor图片上传的文档要求】,【Spring MVC整合FileUpload组件,以实现文件上传功能】)

    说明: (1)本篇博客内容说明:[在后台系统,我们点击新增按钮后,会弹出新增图书对话框]→[该对话框中,包含一个wangEditor富文本编辑器]→[wangEditor富文本编辑器中,可以包含图片] ...

  4. Servlet系列学习笔记14 --- Servlet文件上传和下载(一)

    目录 一.文件上传 1.1 JSP页面 1.2 Servlet处理类 1.3 最终效果 二.文件下载 2.1 JSP页面 2.2 Servlet下载业务类 2.3 最终效果图 一.文件上传 文件上传的 ...

  5. Spring MVC环境中的文件上传功能实现

    在实际开发过程中,尤其是web项目开发,文件上传和下载的需求的功能非常场景,比如说用户头像.商品图片.邮件附件等等.其实文件上传下载的本质都是通过流的形式进行读写操作,而在开发中不同的框架都会对文件上 ...

  6. springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...

    SpringBoot入门建站全系列(九)文件上传功能与下载方式 Spring对文件上传做了简单的封装,就是用MultipartFile这个对象去接收文件,当然有很多种写法,下面会一一介绍. 文件的下载 ...

  7. servlet文件上传下载_Servlet上传文件和下载文件示例

    servlet文件上传下载 Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例 ...

  8. 基于springboot的文件上传功能的实现

    基于springboot的文件上传功能的实现: 前言:本人是刚学习java后端不久,所以通过记录一下平时所学知识,方便日后的复习,如果有出错的地方,还望包含. 1.使用的工具是idea,和spring ...

  9. 后台管理系统2——文件上传功能、富文本编辑器集成

    文章目录 1 文件上传功能 1.1 后台方面 1.2 数据库表的修改 1.3 前端方面 1.4 后端跨域问题 2 富文本编辑器 2.1 使用方法 2.2 在项目中的具体应用. 2.2.1 创建news ...

最新文章

  1. Gartner:2018年十大科技趋势与其对IT和执行的影响
  2. 怎么用python画简单的图-用python进行简单的画图操作
  3. Py:Python实现好莱坞《黑客》影视中珠帘似吊炸天的华丽动态加密页面
  4. [转]Ubuntu下ROS开发环境搭建(QT+ros_qtc_plugin)
  5. CNN结构基元:纹理结构和纹理基元方程化GLOH、Gabor...(Code)
  6. servlet.jar--jar not loaded错误
  7. 实测 | 英伟达A100深度学习性能:训练速度高达V100的3.5倍!
  8. fastjson的常用用法以及自定义排序
  9. ubuntu 国内源
  10. python无法使用decode,Python处理文件名或路径名中无法decode代码问题
  11. dataGridView单元格引用
  12. 简单实用算法——人民币金额大写转换
  13. 【牛客网】马三来刷题之回文解码(今日头条2017年客户端实习在线笔试题)
  14. react 调用webIm
  15. maya将模型导入到unity
  16. hmmbuild结果文件解读:hmm文件
  17. 使用Fiddler对手机APP抓包渗透测试实战
  18. 【数据分析与挖掘】天猫超市复购预测实战(含代码和数据集)
  19. HomePod之远场语音识别增强
  20. 移动端软盘遮盖输入框的解决方案

热门文章

  1. //rest风格写_REST /使用提要发布事件
  2. 混合多云架构_使用混合多云每个人都应避免的3个陷阱(第4部分)
  3. java设计模式教程_Java设计模式教程
  4. java代码初体验_第一次Java 8体验
  5. 用Java将文件读入字节数组的7个示例
  6. Spring Boot自定义横幅生成
  7. JMetro版本11.5.11和8.5.11发布
  8. OpenJDK织机和结构化并发
  9. apache jmeter_Apache Server和JMeter调试
  10. jetty eclipse_3个步骤实现Jetty和Eclipse集成