上传文件 —— Servlet

news/2024/11/20 7:47:54/

目录

一、核心方法

二、实现上传文件代码


        上传文件也是一个常见的需求,在Servlet中也提供了支持。

        上传文件的时候,在前端需要用到 form 表单,在 form 表单中需要使用到特殊的类型:

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

        一个 HTTP 请求,可以一次性提交多个文件。

每个文件都称为一个 Part,每个 Part 都有一个 name(身份标识),服务器代码中就可以根据 name 找到对应的 Part 。基于这个 Part 就可以进一步的获取到文件信息,并进行下一阶段操作。

一、核心方法

HttpServletRequest 类方法:

方法描述
Part getPart(String name)获取请求中给定 name 的文件
Collection< Part > getParts()

获取所有文件

Part 类方法:

方法描述
String getSubmittedFileName()获取提交的文件名
String getContentType()获取提交的文件类型
long getSize()获取文件的大小
void write(String path)把提交的文件数据写入磁盘文件

二、实现上传文件代码

1、通过form表单构造post请求

upload.html:

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>上传文件</title>
</head>
<body><form action="upload" enctype="multipart/form-data" method="post"><input type="file" name="MyImage"><input type="submit" value="提交照片"></form></body>
</html>

2、写一个 Servlet 处理上传请求

UpLoadServlet.java:

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;/*** Created with IntelliJ IDEA.* Description:* User: WangWZ* Date: 2023-05-05* Time: 17:48*/
@MultipartConfig
@WebServlet("/upload")
public class UploadServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Part part = req.getPart("MyImage");System.out.println(part.getSubmittedFileName());System.out.println(part.getContentType());System.out.println(part.getSize());//这里的路径是自己想要将文件存储在的自己电脑上的路径位置part.write("E:/临时的一些小文件/aaa.jpg");resp.setContentType("text/html;charset=utf8");resp.getWriter().write("上传成功");}
}

注意:

要加上注解:@MultipartConfig 来开启对于上传文件的支持,否则 getPart 调用的时候就会抛出异常。


http://www.ppmy.cn/news/63462.html

相关文章

一行代码绘制高分SCI火山图

一、概述 在近半年中&#xff0c;我读了很多的高分SCI文章&#xff0c;很多文章中都有多种不同的火山图&#xff0c;包括「普通的火山图、渐变火山图、以及包含GO通路信息的火山图」&#xff01; 经过一段时间的文献阅读和资料查询&#xff0c;终于找到了一个好用而且简单的包…

Milvus应用开发实战【语义搜索】

美国总统竞选活动即将到来。 现在是回顾拜登政府上任头两年的一些演讲的好时机。 搜索一些演讲记录以了解更多关于白宫迄今为止关于某些主题的信息不是很好吗&#xff1f; 假设我们要搜索演讲的内容。 我们该怎么做&#xff1f; 我们可以使用语义搜索。 语义搜索是目前人工智能…

网络路径下倾斜模型生产流程-模型s3c化

网络路径下倾斜模型生产流程-模型s3c化 将osgb模型处理文件拷贝到osgb模型文件夹下 在osgb模型文件夹下&#xff0c;新建与工程同名文件夹&#xff0c;然后将原文件夹下所有文件拷贝到YNPE27文件夹下&#xff0c; E:\YNPE27\CC\YNPE27\Productions\Production_2\YNPE27 打开o…

腾讯云轻量应用服务器使用限制(买前必看)

腾讯云轻量应用服务器和云服务器CVM相比具有一些限制&#xff0c;比如轻量服务器不支持更换内网IP地址&#xff0c;轻量服务器只能套餐整体升级且不支持降配&#xff0c;轻量不支持用户自定义配置私有网络VPC&#xff0c;还有如实例配额、云硬盘配额、备案限制和内网连通性等限…

【工作笔记】Springboot一个比较通用的数据脱敏处理办法

背景 个人信息中的手机号、邮箱等属于敏感数据&#xff0c;其中手机号需要加密存储&#xff0c;邮箱可以直接存储但是在获取和展示时要做脱敏处理&#xff1b; 针对此类敏感数据&#xff0c; 介绍一种比较通用的脱敏方法。 基于注解 1. 定义DataMask注解 Retention(RetentionPo…

Maven 知识点总结

文章目录 核心点&#xff1a;Maven 能做什么&#xff1f;Maven的安装1、安装2、配置文件 Maven 的概念1、坐标&#xff1a;通过坐标唯一定位2、scope依赖范围3、maven的传递性依赖性质4、optional可选依赖5、exclusion排除依赖6、properties归类依赖7、优化依赖 Maven基本使用1…

125-Linux_守护进程

文章目录 1. 什么是Linux守护进程&#xff1f;2. 如何创建Linux守护进程&#xff1f;① 切换当前工作目录到根目录&#xff0c;这样可以避免守护进程在其它目录中的文件被占用。② 使用fork()函数创建子进程&#xff0c;并在父进程中退出。③ 在子进程中调用setsid()函数创建新…

喜报丨酷雷曼荣膺最佳创新品牌价值奖

2023年4月&#xff0c;“元力觉醒新浪VR 2022年度行业奖项”颁奖盛典成功举行&#xff0c;酷雷曼VR&#xff08;北京同创蓝天云科技有限公司&#xff09;荣获“最佳创新品牌价值奖”荣誉称号&#xff01; 本次大会由元宇宙产业的权威门户媒体新浪VR主办&#xff0c;中国民协元…