文章目录

  • 1 添加jar包
  • 2 编写上传文件的html页面
  • 3 web.xml添加servlet配置信息
  • 4 编写servlet类
  • 5 显示信息

1 添加jar包

lib目录下添加两个上传文件所需要的jar包

2 编写上传文件的html页面

upload.html
  • 添加meta标签,设置页面编码
  • form表单中actionuploadImg,表示对应的servlet
  • method必须为post,才能上传文件。
  • 还必须设置enctype="multipart/form-data"
<!DOCTYPE html>
<html lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>上传文件页面</title>
</head>
<body>
<form action="uploadImg" method="post" enctype="multipart/form-data"><!--<form action="upload" method="post" enctype="multipart/form-data">-->文件名:<input type="text" name="fileName"><br><br>上传: <input type="file" name="filePath"><br><br><input type="submit" name="提交">
</form>
</body>
</html>

3 web.xml添加servlet配置信息

<servlet><servlet-name>UploadImgServlet</servlet-name><servlet-class>UploadImgServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>UploadImgServlet</servlet-name><url-pattern>/uploadImg</url-pattern>
</servlet-mapping>

4 编写servlet类

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.List;/*** @author: afuya* @program: j2ee_2* @date: 2021/6/10 10:36 上午*/
public class UploadImgServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);// 设置上传文件的大小为5Mfactory.setSizeThreshold(1024 * 1024 * 5);List items = null;try {items = upload.parseRequest(request);} catch (FileUploadException e) {e.printStackTrace();}String filename = null;// items的即包含文件,又包含字段,不能用foreach循环遍历。// 可以使用普通for循环,// 或者迭代器Iterator iterator = items.iterator();while (iterator.hasNext()) {}for (int i = 0; i < items.size(); i++) {FileItem item = (FileItem) items.get(i);// isFormField()表示是否是普通类型,不是普通类型,就代表是文件if (!item.isFormField()) {// 用时间戳命名上传的文件,防止文件名重复filename = System.currentTimeMillis() + ".jpg";// 获取相对于磁盘的绝对路径String filepath = request.getServletContext().getRealPath("uploaded");System.out.println("文件保存路径为:" + filepath + "/" + filename);// 创建文件File f = new File(filepath, filename);// 如果没有该目录,就创建一个新的目录f.getParentFile().mkdirs();// 通过item.getInputStream()获取浏览器上传的文件的输入流InputStream is = item.getInputStream();// 从输入流中复制文件到本地磁盘FileOutputStream fos = new FileOutputStream(f);byte[] b = new byte[1024 * 1024 * 5];// read (byte[] b) 方法// 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。// 以整数形式返回实际读取的字节数。int length = is.read(b);while (length != -1) {fos.write(b, 0, length);length = is.read(b);}fos.close();} else {// 非文件字段。因为浏览器指定了以二进制的形式提交数据,// 那么就不能通过常规的手段获取非File字段,// 即String fileName = request.getParameter("fileName");// 也不能通过常规的手段设置编码格式// 即request.setCharacterEncoding("UTF-8");System.out.println("字段名:" + item.getFieldName());String value = item.getString();value = new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);System.out.println("字段值:" + value);}}// 在页面中显示上传的图片String html = "<img width='841' height='206' src='uploaded/%s' />";response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();pw.format(html, filename);}
}

5 显示信息

输入上传的文件信息。

上传文件后,跳转的页面。

命令行信息

【Servlet】servlet上传文件相关推荐

  1. Servlet如何上传文件? 戳这里

    首先对Servlet上传文件的简单理解 此前,Servlet本身没有对文件上传提供直接的支持,一般需要使用第三方框架来实现,这样就比较麻烦 不过,Servlet3.0之后提供了这个功能,而且使用非常简 ...

  2. 【Servlet】上传文件时,ServletFileUpload.isMultipartContent(req)结果一直为false

    今天练习文件上传时,发现 ServletFileUpload.isMultipartContent(req) ServletFileUpload.isMultipartContent(req)的结果一 ...

  3. servlet上传文件接收工具

    2019独角兽企业重金招聘Python工程师标准>>> utf-8编号,如果是其他编码的请自行替换里面的编码 import java.io.File; import java.uti ...

  4. Zuul上传文件,中文文件名乱码解决办法

    问题描述 在项目中又一个上传文件的oss服务,直接调用服务的上传文件成功,如果经过网关zuul服务,上传中文名字的文件,文件名会出现乱码,最终导致上传失败,如果上传英文名字的文件,没有任何问题.怀疑网 ...

  5. 上传文件(Uploading Files)

    创建可以接收HTTP多部分文件上传的服务器应用程序 你会建立什么 您将创建一个接受文件上传的Spring Boot Web应用程序.您还将构建一个简单的HTML界面来上传测试文件. 环境依赖 < ...

  6. jsp通过ajax上传文件,基于jquery

    #前言 推荐讲解:使用ajax提交form表单,包括ajax文件上传 推荐讲解:HTML5+Ajax上传文件 建议:看这篇之前,请先了解直接form表单提交servlet方式上传文件  jsp上传文件 ...

  7. part.write java_使用javax.servlet.http.Part类上传文件

    使用的是Servlet 3.0 新的特征标注(Annotaion)类描述部署,一些低版本的服务器需要使用标准依赖部署描述文件(web.xml)来部署,另外Part也是Java EE 6.0新增的类,P ...

  8. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

  9. 上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...

    J2EE如何实现Servlet上传文件到服务器并相应显示功能 发布时间:2021-07-10 11:44:54 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关J2EE如何实现Ser ...

  10. springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

    参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...

最新文章

  1. NOIp 2014 #2 联合权值 Label:图论 !!!未AC
  2. 细品java封装继承多态
  3. OpenCASCADE:形状愈合之通用拆分工具
  4. 产品经理应该如何设计面包屑原理
  5. vMware安装Ghost操作系统
  6. finereport文本框如何实现多值查询_如何实现参数级联查询
  7. The file “XXX.app” couldn’t be opened because you don’t have permission to view it.问题修复...
  8. 告别韦尔奇——我就是权力
  9. 2021年宇华实验中学高考成绩查询,2021年河南高考状元多少分,今年河南高考状元资料名单...
  10. Lync server 2013新建持久聊天室提示用户未启用SIP
  11. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_19-CMS前端页面查询开发-页面原型-Table组件测试...
  12. c4d导出obj格式有破面_c4d导出obj格式错误怎么办 c4d导出obj格式教程
  13. 打开ftp文件服务器,打开ftp服务器文件管理
  14. springmvc500错误
  15. qwebkit的套壳开发
  16. 关于魔趣刷机(含root)步骤
  17. 求1到n的素数个数C语言,求 1~n 之间素数的个数
  18. 洛谷 P1719 最大加权矩形 (前缀和,动态规划)
  19. Android中比较好的开源项目整理
  20. Zeno节点系统中的C++最佳实践

热门文章

  1. [Luogu 1516] 青蛙的约会
  2. 将Java程序转换为Windows服务 作者:IT168 seasky 2007-09-19
  3. 职场宝典:让你平步青云的10个谈话技巧[转载]
  4. 应届计算机科学与技术简历,计算机科学与技术应届生简历范文
  5. angular技巧_提升Angular技能的5个技巧
  6. 【译】用Java创建你的第一个区块链-part2:可交易
  7. 黑客大会所有资料(740G)
  8. 如何设计一个简单的网页
  9. 小鱼易连声音和画面不同步排查
  10. 字模c语言,[C/C++]字模的解析(视频)