Servlet实现文件上传

2023-11-10

定义

  在Servlet3.0之前实现文件上传需要借助Apache的上传组件,在3.0中,提供了一个Servlet API标准去支持文件上传。

上传前置

  表单页面设置

  1. 设置enctype属性格式为multipart/form-data
  2. .method必须为post

Servlet文件上传步骤

  1.声明@MultipartConfig注解 提供支持和处理

  2.Part 获取文件

//获取多个文件
Collection<Part> parts = req.getParts();
//获取指定文件
Part uploadFile = req.getPart("uploadFile");

3.设置文件上传路径——获取web上下文的根路径下,新建一个文件夹

 String upload = req.getServletContext().getRealPath("upload");  ||
 String upload1 = req.getServletContext().getRealPath("/") + "upload";    

4.获取文件的名称,解决文件名称相同的问题——给文件重命名

//利用当前时间的毫秒数加三位随机数给文件重命名
 Random random=new Random();
 long rename=System.currentTimeMillis()+ random.nextInt(1000)
 
//获取文件类型并进行分割
String type=uploadFile.getContextType();
String fileType=type.substring(type.lastIndexOf("."));

 //拼接重命名名称

 String fileName=rename+fileType;

5.文件.write(path) 将文件输出到指定路径中。

String path = upload + File.separator + fileName;
part.write(path);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet实现文件上传 的相关文章

  • Java 9 中 java.se 模块的意义是什么?

    为什么 java 9 模块系统有 java se 模块 它对其他模块具有传递依赖关系 这与 Java 9 之前的世界中依赖整个 rt jar 不一样吗 module java se requires transitive java desk
  • Spring JSON序列化、Gson反序列化

    我目前在某些内部对象的反序列化方面遇到问题 在春天 我在使用输出之前初始化所有对象 ResponseBody 例如 这是一个响应 id 1 location id 1 extra location data id 2 location 1
  • 在这种情况下,我如何处理 Function 和省略号/可变参数?

    我的项目之一是抛出 lambda 表达式 https github com fge throwing lambdas 我的目标是简化潜在的使用 FunctionalInterfaces in Streams 其在流中使用的唯一 缺陷 是它们
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • Java中单击和双击的区别

    我搜索论坛并看到以下代码 public void mouseClicked MouseEvent e if e getClickCount 2 System out println and it s a double click wasDo
  • JP QL - 一对多关系中的过滤结果

    我在尝试构建 JPQL 查询时陷入困境 并希望比我拥有更多 JPA 经验的人能够提供帮助 考虑以下两个实体 class Author String name OneToMany mappedBy author Set
  • 多个罐子、单个持久单元解决方案?

    包括我在内的一些人一直在努力将不同模块 jar 中的实体合并到单个持久性单元中 尤其是JavaSE 例如这里JPA 2 0 自动从不同的 jar 添加实体类到 PersistenceUnit https stackoverflow com
  • 如何将 java ArrayList 转换为等效的 double[] [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Java 中从 List 转换为 double https stackoverflow com questions 6018267 how to cast from listdouble to
  • json文件格式的升级路径

    我们将 Java 应用程序的用户首选项存储在 JSON 文件中 使用Jackson http jackson codehaus org 随着我们继续开发该应用程序 我们将添加首选项 重命名首选项并删除过时的首选项 当用户将应用程序升级到下一
  • 如何在android中播放内部和外部SD卡中的mp3文件?

    我正在开发一个 mp3 播放器应用程序 它可以播放内部 SD 卡内任何位置的 mp3 文件 我使用以下代码来获取内部存储中存在的 mp3 文件 ArrayList
  • 处理大数据表时应该如何使用Hibernate Mapping

    问题定义 我有一个包含大量数据 超过 100 000 行 的数据库表 表结构如下 AppID DocID DocStatus 1 100 0 1 101 1 2 200 0 2 300 1 每个 applicationID 可能有数千个文档
  • Jersey/JAX-RS:如何自动使用@Valid递归级联bean验证?

    我正在 Jersey 的 REST 资源端点中验证我的 POJO public class Resource POST public Response post NotNull Valid final POJO pojo public cl
  • 了解 Etc/GMT 时区

    Apple 在从 App Store 返回自动续订订阅收据时使用 Etc GMT 时区的理由是什么 Etc GMT 时区到底是什么 Java SDK 能理解这个时区吗 或者我是否必须使用其他第三方库 例如乔达时间 http www joda
  • 为什么 writeObject 抛出 java.io.NotSerializedException 以及如何修复它?

    我有这个异常 我不明白为什么会抛出它 或者我应该如何处理它 try os writeObject element catch IOException e e printStackTrace Where element is a Transf
  • 部署到 Glassfish 4.1 时 URL 模式无效

    如果用户已经通过身份验证 我有一个网络过滤器可以从登录和索引页面重定向 最初我有一个无效的 URL 模式 我修复了无效模式并尝试重新部署以接收以下内容 java lang IllegalArgumentException Invalid U
  • 需要使用自定义类而不是在 Web 服务中生成(通过 wsimport)

    您能帮忙解决以下问题吗 当生成 WS 客户端代码 使用 wsimport ant 任务 时 所有类都会在与 Web 服务相同的包 例如 helloservice endpoint 中自动生成 例如如果我的网络服务有方法 公共节点 getNo
  • DOM 中不再存在缓存元素

    就像在类似的问题中一样 我使用appium java 尝试选择元素 在移动应用程序中 我要转到页面 之后有许多元素 android widget ImageView 0 我需要选择 6 个 例如 这样的元素并执行其他步骤 Byt 只能选择一
  • 有没有办法让 SonarQube 只警告不完整的 Switch 语句?

    使用 Java SonarQube 抱怨枚举值上的 switch 语句没有default case 给出的推理是 最终默认条款的要求是防御性编程 该条款应采取适当的行动 或包含 关于为什么不采取行动的适当评论 当开关盖上时 枚举的所有当前值
  • 返回在 REST 控制器中包装 S3Object.getObjectContent() 的 ResponseEntity 是否安全?

    我正在开发一个 Spring Boot 应用程序 它应该允许用户通过指定的应用程序 REST 接口间接从 Amazon S3 下载文件 为此 我有一个 REST Controller 它向用户返回一个 InputStreamResource
  • Java 和 SQL Server 中的精度噩梦

    我一直在与 Java 和 SQL Server 中的精确噩梦作斗争 直到我不再知道了 就我个人而言 我理解这个问题及其根本原因 但向地球另一端的客户解释这一点是不可行的 至少对我来说 情况是这样的 我在 SQL Server 中有两列 Qt

随机推荐

  • 【新员工座位安排系统】

    新员工座位 工位由序列F1 F2 Fn组成 Fi值为0 1或2 其中0代表空置 1代表有人 2代表障碍物 1 某一空位的友好度为左右连续老员工数之和 2 为方便新员工学习求助 优先安排友好度高的空位 给出工位序列 求所有空位中友好度的最大值
  • 十大管理——项目成本管理

    目录 1 成本管理概念 2 成本管理的四个过程域 2 1四个过程的整体理解 2 2四个过程的ITO口诀版记忆 2 3过程1 制定项目管理计划 2 4过程2 项目成本估算 2 5过程3 项目成本预算 2 5过程4 项目成本控制 3计算题 1
  • Nginx配置系统服务&设置环境变量

    1 Nginx操作问题 由于我们使用源码编译安装Nginx 因此 我们启动 关闭nginx或重新加载配置文件等也就比较麻烦 需要先进入nginx的可执行文件目录 才可以执行nginx相关命令 为了方便对nginx进行相关操作 我们可以将ng
  • 【图像处理】CvArr、Mat、CvMat、IplImage、BYTE转换

    一 Mat 类型 矩阵类型 Matrix 在openCV中 Mat是一个多维的密集数据数组 可以用来处理向量和矩阵 图像 直方图等等常见的多维数据 Mat有3个重要的方法 1 Mat mat imread const String file
  • selenium.chrome怎么写扩展拦截或转发请求?

    Selenium WebDriver 是一组开源 API 用于自动测试 Web 应用程序 利用它可以通过代码来控制chrome浏览器 有时候我们需要mock接口的返回 或者拦截和转发请求 今天就来实现这个功能 代码已开源 https git
  • 坑很多的一道题(含测试样例)——L1-009 N个数求和 (20分)

    L1 009 N个数求和 20分 本题的要求很简单 就是求N个数字的和 麻烦的是 这些数字是以有理数分子 分母的形式给出的 你输出的和也必须是有理数的形式 输入格式 输入第一行给出一个正整数N 100 随后一行按格式a1 b1 a2 b2
  • 微信小程序开发流程步骤 简单 详细

    微信小程序是一种不需要下载安装即可使用的应用 它搭载在目前最流行 用户量最大的社交软件 微信 中 用户通过扫一扫或搜索小程序名字即可找到使用想要的小程序并进行使用 非常的方便快捷 对于开发者而言呢 它也有非常全面 稳定 高效的接口API供开
  • 分布式消息传输系统Kafka的工作原理及其在大数据领域的应用

    引言 在大数据处理过程中 消息队列是一种非常重要的技术工具 它能够有效地解耦数据生产者和消费者之间的关系 实现高效的异步通信 而分布式消息传输系统Kafka 作为一种高性能 高可伸缩性的消息队列 已经成为了大数据领域中最受欢迎的工具之一 一
  • 一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户

    一文看懂推荐系统 概要02 推荐系统的链路 从召回粗排 到精排 到重排 最终推荐展示给用户 提示 最近系统性地学习推荐系统的课程 我们以小红书的场景为例 讲工业界的推荐系统 我只讲工业界实际有用的技术 说实话 工业界的技术远远领先学术界 在
  • mysql数据库卸载再安装失败_MySQL数据库——数据安装与卸载

    MySQL数据库的安装 双击msi 因为6 0之后是收费版本 所以这里我们使用5 5版本的mysql 打开下载的 mysql 安装文件双击解压缩 运行 mysql 5 5 40 win32 msi 或者 mysql 5 5 40 win64
  • vsqt中导出工程的Pro文件

    直接在qtvstools中使用Create Basic pro File所产生的Pro与Pri文件无法打开原工程 正确的做法应该是先用Export Project to pri File导出Pri文件后再使用Create Basic pro
  • C语言动态内存练习:【通讯录(动态内存版本)实现】

    全文目录 前言 目标规划 结构变化 功能实现的不同点 添加功能 AddContact 扩容检查 CheckCapacity 销毁通讯录 DestroyContact 总结 源码 前言 前面我们写了一个静态数组版本的通讯录 再结合刚学习的动态
  • bug记录 bigint数据返回前端数字精度丢失

    我的主键是bigint 9607408720124535 但是前端展示就是9607408720124536 使用postman调用就是9607408720124535 正确的 最终确定是js的number类型有个最大安全值 即2的53次方
  • JavaFX通过Controller类实现第二窗口销毁和程序退出

    Preface Q 为什么有此文 A 不能高度自定义化 网上大部分文章是通过简易的warning窗口 或者 information窗口实现的 且过于繁琐 大部分放在了Main java 不好弄 原理 Controller类中关键性代码 具体
  • MYSQL——模糊查询:like

    模糊查询指的是在数据中按照一定模糊的条件进行搜索 模糊查询的核心在于通配符的使用 通过使用通配符可以匹配不同的字符或字符串 一般模糊查询语句如下 SELECT 字段 FROM 表 WHERE 某个字段 LIKE 条件 表示任意0个或多个字符
  • css 背景效果_软件技术:我写CSS的常用套路(附demo的效果实现与源码)

    前言 本文是笔者写CSS时常用的套路 不论效果再怎么华丽 万变不离其宗 1 交错动画 有时候 我们需要给多个元素添加同一个动画 播放后 不难发现它们会一起运动 一起结束 这样就会显得很平淡无奇 那么如何将动画变得稍微有趣一点呢 很简单 既然
  • Harbor仓库介绍与搭建过程

    一 介绍 Harbor 是一个英文单词 意思是港湾 港湾是干什么的呢 就是停放货物的 而货物呢 是装在集装箱中的 说到集装箱 就不得不提到Docker容器 因为docker容器的技术正是借鉴了集装箱的原理 所以 Harbor正是一个用于存储
  • mysql数据库知识整理

    目录 InnoDB和MyISAM引擎常见区别 索引的基本原理 聚簇索引和非聚簇索引的区别 索引的数据结构及优势 索引的设计原则 innerdb主键索引自增的原因以及联合索引最左原则 锁的类型有哪些 MySQL执行计划 InnoDb引擎的执行
  • 关于网络编程里自定义序列化(字节化)遇到的坑

    1 结构体字节流化可能会出现的问题 网络编程里很多时候需要发送结构体 比如下面定义一个最简单的拥有多个元素的结构体 typedef struct msg int len char name 24 msg t 在保持客户端和服务端程序的结构体
  • Servlet实现文件上传

    定义 在Servlet3 0之前实现文件上传需要借助Apache的上传组件 在3 0中 提供了一个Servlet API标准去支持文件上传 上传前置 表单页面设置 设置enctype属性格式为multipart form data meth