使用AJAX实现上传文件

article/2025/9/6 2:18:20

前端代码

<form   id="uploadForm"  method="post" enctype="multipart/form-data"><label  >上传电子书</label><input type="file"  name="file" ><button  id="upload" type="button"  name="button" >上传</button>
</form>
$("#upload").click(function () {var formData = new FormData($('#uploadForm')[0]);$.ajax({type: 'post',url: "https://****:8443/fileUpload", //上传文件的请求路径必须是绝对路劲data: formData,cache: false,processData: false,contentType: false,}).success(function (data) {console.log(data);alert("上传成功"+data);filename=data;}).error(function () {alert("上传失败");});});

首先创建一个FormData实例,也就是空对象,将页面中现有form表单将他初始化。通过AJAX提交给后台

后端代码

@PostMapping(value = "/fileUpload")@ResponseBodypublic String  fileUpload(@RequestParam(value = "file") MultipartFile file, Model model, HttpServletRequest request) {if (file.isEmpty()) {System.out.println("文件为空空");}String fileName = file.getOriginalFilename();  // 文件名System.out.println(file.getOriginalFilename());String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后缀名String filePath = "C://pdf//"; // 上传后的路径fileName = UUID.randomUUID() + suffixName; // 新文件名File dest = new File(filePath + fileName);System.out.println("pdf文件路径为:"+dest.getPath());if (!dest.getParentFile().exists()) {dest.getParentFile().mkdirs();System.out.println("上传pdf文件+++++++++++");System.out.println("pdf文件路径为:"+dest.getPath());}try {file.transferTo(dest);} catch (IOException e) {e.printStackTrace();}String filename = "/pdf/" + fileName;return fileName;}

注意

1.@RequestParam(value = “file”) 中的file需要和input中的name属性一致。
2.提交按钮类型Type=“Button”如果为“submit”的话,提交完数据会刷新一次页面。

上传多个文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Ajax上传</title><script src="js/jquery-1.12.4.js"></script>
</head>
<body><h1>文件上传</h1><form id="f" enctype="multipart/form-data">UserName:<input type="text" name="userName"><br/>File1:<input type="file" name="file"><br/>File2:<input type="file" name="file"><br/><input type="button" id="btn" value="提交"></form>
</body>
<script>$(function () {$("#btn").on("click",function () {//使用FormData对象来提交整个表单,它支持文件的上传var formData=new FormData(document.getElementById("f"));//额外带来一些数据formData.append("age",14);//使用ajax提交$.ajax("ajaxUpload",{type:"post",data:formData,processData:false,//告诉jquery不要去处理请求的数据格式contentType:false,//告诉jquery不要设置请求头的类型success:function (data) {alert(data);}});})})
</script>
</html>

@WebServlet("/ajaxUpload")
@MultipartConfig //开启上传功能
/*** @author hh*/
public class FileUploadServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");//获取用户名String userName=req.getParameter("userName");//获取年龄String age=req.getParameter("age");System.out.println(userName);System.out.println(age);//获取项目部署的绝对路径String uploadPath=req.getServletContext().getRealPath("/photos");//构建上传的文件夹File dir=new File(uploadPath);if(!dir.exists()){dir.mkdir();}//获取所有上传的PartCollection<Part> parts= req.getParts();for (Part part:parts) {//判断上传的类型是否为空,如果为空则不执行上传if(part.getContentType()!=null){//获取文件名String fileName=part.getSubmittedFileName();//执行上传part.write(uploadPath+File.separator+fileName);}}//响应上传成功resp.getWriter().println("uplaod success");}
}

http://chatgpt.dhexx.cn/article/S46XOy41.shtml

相关文章

计算多边形面积

对于规则多边形&#xff0c;矩形、梯形、平行四边形、三角形&#xff08;根据三边长度&#xff0c;利用公式计算&#xff09;&#xff0c;可以通过公式计算其面积&#xff0c;而对于一般意义的多边形&#xff08;单一多边形、不包含“洞”&#xff09;&#xff0c;怎么计算面积…

C# 多边形面积计算公式

最近在做地图相关面积计算显示工作&#xff0c;百度了很多关于多边形面积计算方面公式和代码&#xff0c;只能说贼费劲&#xff0c;最终完成了把结果展示下 原理&#xff1a;鞋带公式 定义&#xff1a;所述鞋带式或鞋带算法&#xff08;也称为高斯的面积公式和测量员的式&#…

【计算多边形面积】

题目 Input 输入数据包含多个测试实例&#xff0c;每个测试实例占一行&#xff0c;每行的开始是一个整数n(3<n<100)&#xff0c;它表示多边形的边数&#xff08;当然也是顶点数&#xff09;&#xff0c;然后是按照逆时针顺序给出的n个顶点的坐标&#xff08;x1, y1, x2,…

hdu 2036(多边形面积公式)

改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 33251 Accepted Submission(s): 17118 Problem Descripti 话说部分学生心态极好&#xff0c;每天就知道游戏&#xff0c;这次考试如此简单的题目…

鞋带公式——多边形面积求和

个人博客&#xff1a;The Blog Of WaiterXiaoYY 欢迎来互相交流学习。 啥是鞋带公式&#xff08;shoelace&#xff09; Shoelace公式&#xff0c;也叫高斯面积公式&#xff0c;是一种数学算法&#xff0c;可求确定区域的一个简单多边形的面积。 该多边形是由它们顶点描述笛卡…

皮克定理和任意多边形的面积公式

1. 叉乘&#xff1a; 若 &#xff1a; &#xff0c;&#xff0c;则&#xff1a; 而&#xff1a; 则&#xff1a; 为三角形面积&#xff0c;建议百度叉乘的几何意义 2. 皮克公式&#xff1a; 即&#xff1a;多边形面积 S 多边形内整数点的个数 n 多边形边上整数点的个数…

计算任意多边形的面积(已知各顶点的坐标)

https://blog.csdn.net/Adusts/article/details/80546770 如何计算一个多边形的面积&#xff0c;首先想到的是划分成多个小的三角形&#xff0c;因为三角形我们比较熟悉&#xff0c;而且三角形计算面积的方法也很多 三角形: 1. 半周长 P(abc)/2 2. 面积 SaHa/2absin(C)/2sqrt(…

python中的scapy模块

文章目录 模块简介基本用法Scapy的基本操作Scapy模块中的函数Scapy模块的常用简单实例编写端口扫描器 模块简介 Scapy是一个由Python编写的强大工具&#xff0c;目前很多优秀的网络扫描攻击工具都使用了这个模块。也可以在自己的程序中使用这个模块来实现对网络数据包的发送、…

Scapy使用文档中文版

0x00 前言 scapy是一个强大的交互式(interactive)的包操作程序&#xff0c;用python写的&#xff0c;有一个python的命令行解释器界面&#xff0c;可直接运行&#xff0c;当然也可以作为第三库&#xff0c;导入到我们的python程序中去使用它的类和方法。 关于scapy作者的一个简…

“人生苦短,我用Python“——Socket、Nmap、Scapy

渗透测试模块 Socket实例化Socket类Socket常用的函数服务端函数客户端函数服务端和客户端均可使用的函数使用Socket编写一个简单的服务端和客户端 Nmappython-nmap模块类的实例化python-namp模块中的函数PortScanner类PortScannerAsync类使用python-nmap模块来编写一个扫描器 S…

【Python】scapy模块学习笔记

文章目录 0x00 scapy安装以及环境配置0x01 实验10x02 实验20x03 实验30x04 实验40x04 实验50x06 python代码实现端口扫描 0x00 scapy安装以及环境配置 学习自知乎大佬 ——弈心——网络工程师的Python之路—Scapy基础篇 复现了一波 scapy安装: pip install scapy导入scapy方…

Python-Scapy使用介绍

介绍 Scapy可作为python模块运行,也可以单独运行,scapy在kali自带,可以直接输入scapy进入交互命令行。 Scapy可对网络数据包进行发送、监听、解析等操作,类似于python-nmap模块,只不过scapy更偏向于底层操作。 函数 下面简单了解下scapy的基本使用,这里以kali系统为例…

python的scapy基础使用

Scapy库 解决三个问题&#xff1a; 监听流量&#xff08;与wireshark相同&#xff09; 分析流量 编辑流量数据包&#xff08;链路层 网络层 传输层&#xff09;&#xff0c;应用层也可以编辑 意义不大 提供两种操作方式 基于命令进行交互 python代码调用 基于命令进行交…

Python使用scapy和dpkt抓包并解析

scapy scapy是python中一个可用于网络嗅探的非常强大的第三方库&#xff0c;可以用它来做 packet 嗅探和伪造 packet。 scapy已经在内部实现了大量的网络协议。如DNS、ARP、IP、TCP、UDP等等&#xff0c;可以用它来编写非常灵活实用的工具。 scapy安装&#xff1a; pip inst…

Scapy:交互式数据包处理程序

简介 Scapy是一个强大的&#xff0c;用Python编写的交互式数据包处理程序 可以让用户发送、嗅探、分析和伪造网络包&#xff0c;从而用来侦测、扫描和向网络发动攻击 可以轻松地处理扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attac…

Scapy基础学习之一

关于Scapy Scapy的是一个强大的交互式数据包处理程序&#xff08;使用python编写&#xff09;。它能够伪造或者解码大量的网络协议数据包&#xff0c;能够发送、捕捉、匹配请求和回复包等等。它可以很容易地处理一些典型操作&#xff0c;比如端口扫描&#xff0c;tracerouting…

Scapy常用操作和命令(1)

&#xfeff;&#xfeff; ls() 列出scapy中实现的所有网络协议 >>> ls() ARP : ARP ASN1_Packet : None BOOTP : BOOTP CookedLinux : cooked linux DHCP : DHCP options DHCP6 : DHCPv6 Generic Message) DHCP6OptAuth : DHCP6 Option - …

python+scapy 抓包与解析

最近一直在使用做流量分析,今天把 scapy 部分做一个总结。 python 的 scapy 库可以方便的抓包与解析包,无奈资料很少,官方例子有限,大神博客很少提及, 经过一番尝试后,总结以下几点用法以便大家以后使用。 python scapy 抓包与解析 转载请注明来自:b0t0w1’blog ## 安…

基于Scapy的传统网络攻击实现

基于Scapy的传统网络攻击实现 前言开发环境与工具系统主要功能 系统原理分析协议工作原理ARP工作原理TCP工作原理 攻击原理及实现方法ARP扫描原理ARP欺骗原理SYN Flood攻击原理实现方法 功能设计功能描述 系统功能实现准备&#xff08;Scapy的下载&#xff09;ARP扫描的实现ARP…