单文件、多文件上传 - Tomcat
文章目录
- 1. 单文件上传
- 1.1 前端页面显示
- 1.2 Servlet后台处理请求
- 2. 多文件上传
- 2.1 前端页面显示
- 2.2 Servlet后台处理请求
1. 单文件上传
1.1 前端页面显示
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html><!-- 相对路径都以base路径为标准 -->
<%String scheme = request.getScheme() + "://";String server = request.getServerName() + ":";String port = request.getServerPort()+"";String projectName = request.getContextPath() + "/";String basePath = scheme+server+port+projectName;
%><html>
<head>
<meta charset="UTF-8">
<base href="<%=basePath%>">
<title>Insert title here</title>
</head>
<body><form action="FileServlet" method="post" enctype="multipart/form-data"><input type="file" name="newFile"/><br><br><input type="text" name="name"><br><br><input type="submit" name="上传文件" /></form>
</body>
</html>
显示效果
1.2 Servlet后台处理请求
@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取有关上传文件的信息对象Part filePart = req.getPart("newFile");// 获取文件名String fileName = filePart.getSubmittedFileName();// 规定一个上传的文件存到服务器哪个位置 --- 必须绝对路径 String filePath = req.getServletContext().getRealPath("/File/") + fileName;// 获取前端上传的文件的字节流输入流对象InputStream is = filePart.getInputStream();// 将二进制字节流持久到硬盘FileOutputStream fos = new FileOutputStream(filePath);byte[] buffer = new byte[1024];int length = -1;while ((length = is.read(buffer)) != -1) {fos.write(buffer, 0, length);}is.close();fos.close();// 在前端提示上传成功的弹框resp.setContentType("text/html;charset=utf-8");resp.getWriter().print("<script>alert('上传成功')</script>");}
2. 多文件上传
切记必须设置
不可缺少name的设置,否则servlet获取不了上传的文件流
2.1 前端页面显示
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%String scheme = request.getScheme() + "://";String serverName = request.getServerName() + ":";String port = request.getServerPort()+"";String projectName = request.getContextPath() + "/";String basePath = scheme+serverName+port+projectName;
%><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<base href="<%=basePath %>">
<title>Insert title here</title>
<script src="js/jquery-3.4.1.min.js" type="text/javascript"></script>
</head>
<body><button id="add_btn">添加</button><br><br><form action="FileMulitiServlet" method="post" enctype="multipart/form-data"><div class="container"></div><input type="submit" name="上传文件"></input></form>
</body><script>$(function() {// 页面必须始终保持一个<input>文件上传输入框addFile();var count = 1;// 文件上传添加按钮事件处理$("#add_btn").click(function(){addFile();count++;})// 文件上传按钮删除事件处理$(".container").on("click", ".del_btn", function() {if(count == 1) {return;}$(this).parent().remove();count--;})// 增添文件上传输入框的方法function addFile() {$(".container").append('<div><input name="file" type="file"><button type="button" class="del_btn">删除</button></div><br><br>');}})
</script></html>
页面显示
2.2 Servlet后台处理请求
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 规定一个存文件的地方String projectRealPath = req.getServletContext().getRealPath("/File/");String filePath = null;// 定义初始化一个输出、输入流OutputStream os = null;InputStream is = null;// 获取所有part参数对象Collection<Part> parts = req.getParts();// 查找全部的part参数对象for(Part part : parts) {String fileName = part.getSubmittedFileName();// 判断part这个对象是否存有文件名,有则说明是文件对象if(fileName != null) {is = part.getInputStream();filePath = projectRealPath + fileName;os = new FileOutputStream(filePath);byte[] buffer = new byte[2048];int len = -1;// 将用户上传的文件持久化服务器硬盘上while( (len=is.read(buffer)) != -1 ) {os.write(buffer, 0, len);}// 记得关闭 -- 否则文件的内容为空is.close();os.close();}}// 上传文件成功,则显示信给客户resp.setContentType("text/html;charset=utf-8");resp.getWriter().write("上传成功");}
运行效果
单文件、多文件上传 - Tomcat相关推荐
- jsp 文件/图片上传tomcat服务器
关于文件/图片上传tomcat服务器 1.环境准备和情况说明 JSP 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器. 上传的文件可以是文本文件或图像文件或任何文档. 使用 Se ...
- java序列化表单同步请求_Ajax serialize() 表单进行序列化方式上传文件
通过传统的 form 表单提交的方式上传文件 上传文件: 不过传统的 form 表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用 Ajax 的方式进行请求的. 使用 ...
- 仿抖音短视频h5单页版htnl上传即可使用源码文件
仿抖音短视频的模板 项目是前后端分离,前端采用uniapp开发,后端目前是用frphp临时搭建的接口,后续为了方便管理内容,会移植到极致cms上.现在也可丢到网站里当一个单页使用,无聊时可以刷一刷短视 ...
- step-by-step多文件WEB批量上传(swfupload)的完美解决方案
来源:http://www.cnblogs.com/goody9807/archive/2008/11/04/1326098.html 功能完全支持ie和firefox浏览器! 一般的WEB方式文件上 ...
- form表单刷新_《大胖 ? 小课》- 不用 js 实现文件无刷新上传
这是<大胖小课>栏目的专题一<说说文件上传那些事儿>的第3节-<不用 js 实现文件无刷新上传> 专题已经更新章节: <大胖 • 小课>- 我是这样理解 ...
- 如何设置input实现同时选中多个文件并同时上传
#1.表单上传文件的步骤: ##- 1)设置enctype 默认为:enctype="application/x-www-form-urlencoded"(一般不设置)若要表单中有 ...
- SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)
场景 SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- vue+element-ui大文件的分片上传和断点续传js-spark-md5和browser-md5-file
注意:以下共两份代码片段,第一份为原博主链接代码,第二份自己写的整体代码(比较乱) 1.参考 https://www.cnblogs.com/kelelipeng/p/10158599.html (j ...
- 如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作...
Phpstorm除了能直接打开localhost文件之外,还可以连接FTP,除了完成正常的数据传递任务之外,还可以进行本地文件与服务端文件 的异同比较,同一文件自动匹配目录上传,下载,这些功能是平常I ...
- WEB版一次选择多个文件进行批量上传(Plupload)的解决方案
说明:Plupload支持多种浏览器,多种上传方式! 一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的添加到页面,无法如 w ...
最新文章
- Office365-----Skype for business
- 实战SSM_O2O商铺_36【商品】商品列表之Dao+Service+Controller层的实现
- (chap1 网络基础知识)网络的构成要素:(2)中继器
- Python Django 请求重定向的三种方式
- tomcat源码阅读之StandardHost和StandardEngine
- IOS-C语言第12天,(函数指针)Point and macro(宏)
- Java文件路径及文件名乱码_javaweb文件下载及文件名中文乱码处理
- abp.net mysql_ABP .Net Core Entity Framework迁移使用MySql数据库
- 开两个服务内存溢出_应用服务OkHttpClient创建大量对外连接时内存溢出
- Spring Cloud与Spring Boot版本匹配关系
- Flash Player版本相关问题
- MYSQL导入导出.sql文件
- 【 MATLAB 】mod 函数介绍
- Opencv中的ROI介绍
- Mac conda 使用
- 27岁了,目前从事软件测试,听一些说测试前途是IT里最差的,是这样吗
- 女生要不要去北航学计算机,在北航读书有个女朋友是种怎样的体验?
- 使用JS获取input值
- 朱清时看何谓大学生之“大”
- 无障碍(二)检测与防范
热门文章
- 树莓派Raspberry Pi 系统搭建和智能机器人小车的组装调试
- 生物信息学在感染和疫苗研究中的应用
- 字节跳动 Java 岗一二三面全经过分享
- Tensorflow2.0版本下如何实现Kronecker积
- 论文阅读《Fast-MVSNet: Sparse-to-Dense Multi-View StereoWith Learned Propagation and Gauss-Newton Refine》
- 科沃斯扫地机器人电路原理图_扫地机器人的工作原理详解
- 经济法论文选题有什么推荐吗?
- IDEA SpringBoot项目Docker一键部署
- Echarts折线图X轴Y轴图例位置调整
- APM(应用性能管理)与Dapper原理介绍