JavaEE - Servlet(向服务器上传文件 Part类)

news/2024/5/8 4:36:52/文章来源:https://blog.csdn.net/dodamce/article/details/127344784

我们在需要向服务器上传文件时,在前端需要使用form表单,form表单需要使用特殊的类型 form-data

此时提交文件的时候,浏览器会把文件内容以form-data的格式构造到HTTP请求中,服务器就可以通过getPart获取了

需要注意:

  1. 一个HTTP请求,可以一次提交多个文件,每个文件都称为一个Part。
  2. 每一个Part都有一个name标识,服务器可以通过name找到对应的Part。这个name对应了input标签的name属性

服务器getPart函数获取到的Part类提供的方法

方法
String getSubmittedFileName()获取提交文件名
String getContentType()获取提交文件类型
long getSize()获取文件大小
void writeString(String Path)将提交的文件写入到磁盘文件中

后端要想成功使用getPart函数,需要在处理post请求的类前加上@MultipartConfig注解,否则会调用失败。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>上传文件</title>
</head><body><form action="upload" method="post" enctype="multipart/form-data"><input type="file" name="img"><input type="submit" value="提交"></form>
</body></html>
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;@MultipartConfig
@WebServlet("/upload")
public class UpLoad extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Part part = req.getPart("img");System.out.println(part.getSize());System.out.println(part.getSubmittedFileName());System.out.println(part.getContentType());//这里选择写入图片文件part.write("E:\\TmpBuff\\tmp.jpg");resp.setContentType("text/html;charset=utf8");resp.getWriter().write("上传成功");}
}

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_401963.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.idea 标定相关

1.发现 VINS对于参数准确性的要求高于ORBSLAM。依据是相同的参数,ORBSLAM可以提供准确的定位结果,但是VINS很容易就会发散。在线标定外参很有效,经历过几次外参标定以后的外参给VINS可以获得很好的效果,但是不排除只是针对这个场景,随后测试如果效果好,考虑给ORBSLAM3增加…

Redis常见的问题

① 缓存雪崩 缓存雪崩是指在短时间内&#xff0c;有⼤量缓存同时过期&#xff0c;导致⼤量的请求直接查询数据库&#xff0c;从⽽对数据库造成 了巨⼤的压⼒&#xff0c;严重情况下可能会导致数据库宕机的情况叫做缓存雪崩。 我们先来看下正常情况下和缓存雪崩时程序的执⾏流…

docker安装tomcat、mysql、redis

一、tomcat 1.下载tomcat8docker pull tomcat:8.5.612.启动容器(-d 后台启动)docker run -d -p 8080:8080 tomcat:8.5.61 3.访问首页http://ip:8080/访问不到 404 解决:需要修改tomcat下的文件夹 如下 进入后webapps.dist改为webapps 二、mysql 1.拉取mysqldocker pull mys…

网课题搜答案公众号接口系统

网课题搜答案公众号接口系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xf…

分布式数据库的基本概念

1.分布式数据库系统的产生和定义 产生原因: 经济的发展&#xff1a;经济发展&#xff1a;跨国公司&#xff1a;产生一个地方需要管理另外一个地方数据的需求 发展历程&#xff1a; 20世纪70年代末 成长于80年代 第一个数据库系统SDD-1是美国计算机公司(CAA)于1976年-1978年…

浏览器插件官方demo学习(一):基本代码、页面渲染、书签、cookie、Omnibox等

前言 参考&#xff1a;https://github.com/GoogleChrome/chrome-extensions-samples 官方目前只提供了几个基于v3版本的例子&#xff0c;其他例子都是基于v2版本的&#xff08;可能是官方比较忙&#xff0c;没空写例子吧&#xff09;。先从v3版本的例子开始学习&#xff0c;后…

JVM(六) —— 运行时数据区之堆的详细介绍(一)

JVM&#xff08;六&#xff09; —— 运行时数据区之虚拟机栈的详细介绍核心概述堆空间代码演示堆空间划分&#xff08;重要&#xff09;一个Java程序运行起来是一个进程&#xff0c;这个进程对应着一个JVM实例&#xff0c;一个JVM实例对应着一个运行时数据区。而一个运行时数据…

JAVA设计模式-组合模式

目录 1、例子 2、组合模式基本定义 总结&#xff1a; 1、例子 编写程序展示一个学校院系结构&#xff1a;需求是这样&#xff0c;要在一个页面中展示出学校的院系 组成&#xff0c;一个学校有多个学院&#xff0c;一个学院有多个系传统解决方案&#xff1a; 分析&#xff1a;…

一起学solidity写智能合约——整型(uint和int)

前言 整型一般用的比较多&#xff0c;会在各个合约中见到整型的存在&#xff0c;那么这个类型也是学习路上不可或缺的 环境&#xff1a; remix编译器点我跳转 正文 我们在sol中遇得到很多类型为整型的数据&#xff0c;所以我们的sol提供了两种数据类型的整型&#xff1a; …

基于物联网的户外环境检测装置设计

目 录 摘 要 1 Abstract 2 第1章 绪论 4 1.2 选题背景及意义 4 1.2 研究现状 4 1.3本课题的发展趋势和研究可行性 5 1.4研究主要内容 5 第2章 基于物联网的户外环境检测装置设计概述和相关原理 6 2.1 系统的概述 6 2.1.1 总体设计方案 6 2.1.2 总体框图 6 2.2 相关理论 7 2.2.1…

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法

算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法 目录 算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法效果一览基本介绍模型结构程序设计学习总结参考资料效果一览 基本介绍 针对集成学习参数众多,缺乏高效准确的参数寻优方法的问题,提出了基于贝叶斯优化随机森林方法…

k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

RK3588+AI工业视觉检测设计方案

本文详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格&#xff0c;以及详细的硬件接口设计参考说明&#xff0c;使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通&#xff0c;智慧医疗等人工智能领域的智能终端设备。…

自定义ClassLoader

一&#xff0c;如何自定义classLoader&#xff1f; 需要使用加载器的loadClass方法&#xff1a;ClassLoader().loadClass 查看loadClass方法源码 首先检查加载&#xff0c;调用父5加载器开始双亲委派机制&#xff0c; 如果没有加载到&#xff0c;就调用findClass方式 打开发现…

JVM加载class文件的原理机制

JVM加载class文件的原理机制 JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的&#xff1b; 当Java程序需要使用某个类时&#xff0c;JVM会确 保这个类已经被加载、连接(验证、准备和解析)和初始化。 类的加载是指把类的.class文件中的数据 读入到内存中&#xff0c…

神经网络中各个隐藏层,深度神经网络隐藏层数

1、神经网络的隐含层节点数怎么设置啊&#xff1f;比如要设置18层隐含节点数&#xff01;跪求&#xff0c;工作急用&#xff01; 隐层一般是一层或两层&#xff0c;很少会采用三层以上&#xff0c;至少隐层的节点数确定&#xff0c;一般有以下几种方法&#xff1a;1、有经验的…

【ArchSummit】通过ArchSummit 全球架构师峰会对企业数字化转型的思考

前言 &#x1f4eb; 作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &a…

生命在于学习——Socket编程(偏安全方面)

本篇文章仅用于学习记录和交流&#xff0c;不得用于其他违规用途&#xff0c;产生的不良后果&#xff0c;自己负责。 一、Socket介绍 首先socket (套接字) 是工作在应用层和传输层之间一个抽像层 , 为什么要有他呢 ? 虽然我们已经有了ipport可以和世界上任意一台计算机上的软…

chainlink 小实战 web3 “捐助我”项目合约及前端交互——关于 《Patrick web3 course Lesson 7-8 》课程代码中文详解

FundMe lesson 的 示例 本质上是一个合约上对 eth 接收和发送的演示&#xff0c;但这个演示增加了前端 ethers 的交互&#xff0c;以及对 chainlink 预言机喂价的使用。 总体来说是一些 Defi 项目上的某一块功能的缩影&#xff0c;不过总体来说还是挺简单的。 若不会 chainli…

(附源码)计算机毕业设计SSM基于JAVA人事管理系统

&#xff08;附源码&#xff09;计算机毕业设计SSM基于JAVA人事管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…