使用FormData对象ajax异步方式上传图片,文件

大华事件检测智能服务器,大华股份:高速公路智能事件检测 解决方案 1方案背景随着我国基础设施建设的飞速发展,公路尤其是高速公路的总里程数年年攀升。交通运输部统计数据显示,截止2017年底全国公路总里程477.35万公里,其中高速公路13.65万公里,位居世界第一。高速公路的运营和管理作为全国交通管理的重要组成部分日益受到严峻挑战,交通拥堵和事故频发已成为高速公路上非常突出的问题。抛洒物、行人、车辆不规则行驶等事件是导致以上结果的重要原因。基于视频分析的高速公路智... 阅读详情

HTML代码

<div id="uploadForm">
    <input id="file" type="file"/>
    <button id="upload" type="button">upload</button>
</div>

这里没有<form>标签,也没有enctype="multipart/form-data"属性。

javascript代码

var formData = new FormData();
formData.append('myfile', $('#file')[0].files[0]);
$.ajax({
    url: '请求路径/uploadPic',
    type: 'POST',
    cache: false,
    data: formData,
    processData: false,
    contentType: false
}).done(function(res) {
}).fail(function(res) {});

这里有几处不一样:

  • append()的第二个参数应是文件对象,即$('#file')[0].files[0]。
  • contentType也要设置为‘false’。

从代码$('#file')[0].files[0]中可以看到一个<input type="file">标签能够上传多个文件,
只需要在<input type="file">里添加multiple或multiple="multiple"属性。


java代码

@RequestMapping(value = "/uploadPic",produces = "application/json")
@ResponseBody
	public Object importPicFile(String picParams, MultipartFile myfile, HttpServletRequest request,HttpServletResponse response)
			throws IOException {
		Map<String, Object> resultMap = new HashMap<String, Object>();
		Map<String, Object> map = new HashMap<String, Object>();
		if (myfile.isEmpty()) {
			map.put("result", "error");
			map.put("msg", "上传文件不能为空");
			return String. valueOf(JSONObject.fromObject (resultMap));
		} else {
			String originalFilename = myfile.getOriginalFilename();
			// String fileBaseName=FilenameUtils.getBaseName(originalFilename);
			String dirName = "image";
			// 定义允许上传的文件扩展名
			HashMap<String, String> extMap = new HashMap<String, String>();
			extMap.put("image", "gif,jpg,jpeg,png,bmp");
			// 检查扩展名
			String fileExt = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).toLowerCase();
			if (!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)) {
				resultMap.put( "result", "error");  
				resultMap.put( "msg", "上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。" );
				return String. valueOf(JSONObject.fromObject (resultMap));
				//return Results.byMessage(ShowTextUtils.FAIL, "上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。");
			}
			// 设置目录
			if (IConstants.ISDEMO.equals("1")) {
				dirName = "demo/file/sys/" + dirName + "/" + new SimpleDateFormat("yyyy/yyyyMMdd").format(new Date());
			} else {
				dirName = "file/sys/" + dirName + "/" + new SimpleDateFormat("yyyy/yyyyMMdd").format(new Date()) + "/";
			}
	
			// 文件保存目录路径
			String savePath = getFilePath() + dirName;
			// 新文件名
			String newFileName = getFileName() + "." + fileExt;
			
			 // 检查目录
			File uploadDir = new File(savePath);
			if (!uploadDir.isDirectory()) {
				uploadDir.mkdirs();
			}
			// 检查目录写权限
			if (!uploadDir.canWrite()) {
				resultMap.put( "result", "error");  
				resultMap.put( "msg", "上传目录没有写权限。");
				return String. valueOf(JSONObject.fromObject (resultMap));
			}
			
			try {
				// 把上传的图片放到服务器的文件夹下
				FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(savePath, newFileName));

			} catch (Exception e) {
				resultMap.put( "result", "error");  
				resultMap.put( "msg", e.getMessage() );
				return String. valueOf(JSONObject.fromObject (resultMap));
				//return Results.byMessage(ShowTextUtils.FAIL, e.getMessage());
			}
			// 上传文件
			File uploadedFile = new File(savePath, newFileName);
			// 上传阿里云(没有这个需求可以注释掉)
			upyun = new UpYun(BUCKET_NAME, OPERATOR_NAME, OPERATOR_PWD);
			upyun.setDebug(false);

			// 要传到upyun后的文件路径
			String filePath = "/" + dirName + "/" + getFileName() + "." + fileExt;

			// 设置待上传文件的 Content-MD5 值
			// 如果又拍云服务端收到的文件MD5值与用户设置的不一致,将回报 406 NotAcceptable 错误
			upyun.setContentMD5(UpYun.md5(uploadedFile));

			// 上传文件,并自动创建父级目录(最多10级)
			boolean result = upyun.writeFile(filePath, uploadedFile, true);

			if (result) {
				filePath = URL + filePath;
			}
			resultMap.put( "result", "success");  
			resultMap.put( "msg", "上传图片成功" );
			resultMap.put( "filePath", filePath );
			return String. valueOf(JSONObject.fromObject (resultMap));
			}
	}
	public String getFilePath() {
		String os = System.getProperty("os.name");
		if (os.toLowerCase().startsWith("win")) {
			// 正式环境Web所在目录
			return "F:/soft/image/webapps/ROOT/";
		} else {
			// 正式环境 linux 目录 /opt/tomcat-instance/web/webapps/ROOT/ +
			// “WEB-INF/outHtml/***.jsp”
			return "/opt/tomcat-instance/dx_manager/ROOT/";
		}

	}

	public String getFileName() {
		SimpleDateFormat simpledateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		Random random = new Random();
		return simpledateFormat.format(new Date()) + random.nextInt(10000);
	}


copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统 下面给出一个完整示例代码,结合 DeepSeek‑R1 的技术方法,实现一个端到端的 VLA(视觉+语言行动)自动驾驶深度强化学习系统。.2f。 阅读详情

相关推荐

inferCNV包安装问题及解决办法

InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:

m0_51042606的博客 6803

jquery利用formdata实现点击图片进行ajax上传文件,图片

不多说,直接上代码

lost_chost的博客 666

二维码扫描与页面跳转的完整流程解析

本文详细解析了二维码扫描与页面跳转的完整流程,从核心原理到前后端实现,涵盖了二维码生成、扫码事件处理、后端验证机制及跳转逻辑等关键环节。特别介绍了如何使用qrcode.js生成二维码、WebSocket处理扫码状态以及JWT令牌验证设计,帮助开发者构建安全高效的扫码跳转系统。

cicd6pipeline的博客 1088

【AJAX】FormData实现图片上传的详细教程

FormDataFormData是 Web API 提供的一个构造函数,用于构建一组键值对,通常用于表单数据的提交。相较于传统的表单提交方式,FormData允许我们在不刷新页面的情况下上传文件,尤其适合文件(如图片、视频等)上传的场景。FormData可以灵活地管理文件和文本字段的组合,非常适合需要异步提交的场景,例如通过AJAX请求上传图片至服务器。FormData为图片上传提供了强大的支持,结合fetch或,可以轻松实现文件上传功能。

lph159的博客 2616

提供一个微信投票刷票的js代码

最近几天,有个朋友找我去写一个脚本帮他 在微信上刷票、微信投票刷票,我大概看了一下,本次微信投票刷票其实就是根据微信的openid来限制,每个openid只能投三次票的限制。上图可以看出,其实只要openid,和toopenid即可,openid是自己的微信id,toopenid是投票对象的微信id,那我们定时修改openid即可给某一个人刷投票。把这段代码复制到浏览器F12之后的console里,直接回车即可开始微信投票刷票(刷新或关闭浏览器即可停止刷票)//生成随机的ip地址。

qq_858865388专业提供快速微信投票教程攻略和方法的博客 2万+

vmware vsphere 证书过期告警处理方法

vSphere Clinet 管理页面出现“证书告警” ,检查证书未发现现有证书有过期现象

m0_51902127的博客 3637

jq formdata上传图片

html:<input type="file" name="" id="files" value="" class="files" /> js:$("#files").change(function (e) { var formData = new FormData(); var fileObj = $(thi...

weixin_38170137的博客 310

光学系统设计:波段、光源、光纤与探测器匹配指南

在光学测量和光纤通信系统中,波段、光源、光纤和探测器的匹配关系是系统设计的核心基础。波段指电磁波谱中的特定波长范围,光源负责产生特定波长的光信号,光纤作为传输介质需要与波长匹配以降低损耗,探测器则负责将光信号转换为电信号。理解各组件的光谱特性对于系统性能至关重要,例如在850nm短波长多模光纤系统中,VCSEL激光器与PIN光电二极管的组合能提供最佳性价比。典型应用场景包括生物医学成像、光纤通信和气体传感,其中光谱重叠优化、模场直径匹配和偏振特性协调是关键技术要点。通过实测数据对比不同组合的传输性能,可以为

weixin_33812433的博客 338

JQuery Ajax使用FormData对象上传文件 图片

通过jQuery Ajax使用FormData对象上传文件FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单"。在 Mozilla Developer 网站 使用FormData对象 有详尽的FormData对象使用说明。但上传文件部分只有底层的XMLHttpRequest对象发送上传请求,那么怎么通过jQuery的Ajax上传呢

小北哥哥和北妈 4万+

使用GitLab限制开发者使用CI/CD的权限,三种方案

使用三种方案来限制开发人员的CI/CD权限。

知无涯 5095

Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置

串行器 +解串器组成,软件需要做的就是写这三部分的驱动,让摄像头数据能到达。3. 配置解串器和串行器的GMSL链路。串行器和解串器上电成功之后,就可以配置。软件配置(注意软件只可以配置速率,2. 9296上电,使能芯片。的版本和速率,比如版本是配置。配置成功之后,就会出现串行器。的链路,其它同类型的。设备地址,我设置的是。...

DSMGUOGUO的博客 1万+

运用ajax上传图片(formdata+input)

问题: 今天拿到接口文档,有一个上传图片的接口,看文档其中参数名是“file”以及示例是一串本地的URL。顿时有点懵,不知道怎么拿到这个参数。 思路: 与后端交流过那个示例值其实并不是URL。其实它是个对象,而这个对象表示照片的信息内容以及地址。这涉及到input标签的属性“file”以及formdata一种传参形式。 一、formdata类型 现代 Web 应用程序中经常需要对表单数据进行序列化,因此 XMLHttpRequest Level 2 新增了FormData 类型。FormData 类型便于

casey130的博客 6032

matlab 点云学习目录【2026最新版】

matlab 点云学习目录。博客长期更新,本文最近更新时间为:2026年6月15日。

点云侠的博客 3万+

ajax图片上传

form name="myForm" enctype="multipart/form-data" > input class="title input" type="text" placeholder="请输入标题" id="title" name="title"> input type="file" value="AjaxUpload" style="margin-top: 1

lsx392502599的博客 264

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

js带预览功能上传图片

一般上传文件使用的是 , 看到的效果大概就是这样的 如果要实现预览上传的图片功能,先要在div中开辟一个存放预览图片的地方,如下面的preview空间, <form id="save" enctype="multipart/form-data" > <div class="item"> ...

IT_townlet的博客 497

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SSM表单异步提交图片(FormData)以及其他内容并且存入数据库记录

SSM表单提交图片(FormData)以及其他内容并且存入数据库记录 最近学习使用到Spring + SpringMVC + MyBatis 整合,并且做一个小小的案例网站.其中向数据库中添加一条新的信息,涉及到了图片上传.新人入手总是大坑小坑不断,为此在这里记录一下自己在这个上传图片并且存储数据库的功能中遇到的问题. 因为在没有使用SSM框架之前,表单提交文件直接使用了多部分提交以及注解,大家一定也了解,所以在SSM的案例中,想当然的使用了之前的方式,结果实现起来总是那么不尽人意,先来贴一下最开始的代码

weixin_46006696的博客 769

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

django-Ajax实现上传图片(原生JS以及jQuery写法)

1.原生实现上传 //首先new一个XMLRequest对象 xml=new XMLHttpRequest(); //上传路径以及提交方式,true表示以异步方式发送数据 xml.open(‘post’,’/upload.html’,true); //发送数据 xml.send(“k1=v1;k2=v2;”); 2.jQuery实现 $.ajax({ url:’/upload.html’, ...

爱吃辣椒的锅包肉 1296

h5如何上传文件二进制流_h5上传文件的方法

h5上传文件的方法:H5标签提供了原生的 input[type=file] 标签支持文件上传功能。类似于表单提交,文件上传有两种,同步和异步,同步无法获得上传工程中的进度,异步是采用ajax方式上传,实时获得上传进度等信息。异步上传文件,文件编码格式采用 multipart/form-data (https://segmentfault.com/a/1190000008791342#arti...

weixin_32258919的博客 951

总结1:Ajax上传图片至阿里云服务器

1.页面效果以及JS <!-- HTML --> <div style="margin:30px;"> <div class="form-horizontal rowt"> <div class="control-label col-lg-1"> 标书分类 </div> <div class="col-...

添砖加瓦 854

SpringMVC MultipartFile 异步批量上传文件

使用MultipartFile,前端通过异步方式提交,以上传图片做个简例,只介绍前端及处理层代码 需求简述: 1、spring配置 32505856 4096 2、FTP配置 本机模仿搭建FTP服务,配置简易FTP服务,启动服务 3、FTP操作工具类FileUtils.java,用于处理层调用 package lv.yo

Always_MyLoverX的博客 8268

前端文件相关总结

  先引用掘金上的一个总结,将前端会遇到的文件相关的知识点间的关系串联了起来。   前端技术提供了一些高效的解决方案:文件流操作和切片下载与上传。 1. 文件基本操作 1.1数据流和文件处理的基本概念 数据流是指连续的数据序列,可以从一个源传输到另一个目的地。在前端开发中,文件可以被看作数据流的一种形式,可以通过数据流的方式进行处理。 文件处理涉及读取和写入文件的操作,包括读取文件的内容、写...

lijiawei111的博客 492

前端上传头像并且使用中间件formidable处理

1.formidable中间件相关配置;2.同步表单提交;3.Ajax异步提交4.demo代码

pingting_的博客 549

ajax+springboot传输图片到后台 并以blob形式存入数据库 --柚子真好吃

ajax+springboot传输图片到后台 并以blob形式存入数据库 --柚子真好吃一、简介二、前端实现三、后端实现 一、简介 本文章主要实现前端选择图片以MultipartFile形式发送至后端。 后端接收文件转化为Blob格式,存储到数据库中。 二、前端实现 同步方式代码 <div> <form action="/sendFile" method="post" enctype="multipart/form-data"> <input type="fil

java 2814

thinkPHP利用ajax异步上传图片并显示、删除

近来学习tp5的过程中,项目中有个发帖功能,选择主题图片。如下: 利用原始的文件上传处理,虽然通过原始js语句能实时显示上传图片,但是这样的话会涉及很多兼容问题。使用ajax技术,实现选择性删除所选图片功能,并不会有兼容问题。 表单文件form: &lt;form method="post" enctype="multipart/form-data"&gt; &lt;...

weixin_30302609的博客 99

关于图片上传

前面我弄了一个关于上传图片到阿里oss 的jq包的 方法。 现在对其升级。 为何要升级?1,主要是减小服务器开销,本来就可以在请求之前完成,那么我们就不必要让数据库加工了。 原理:利用js 对图片进行压缩。压缩好了后,在进行上传。 直接上代码: /* 图片上传前进行压缩 * 前端压缩 *主要是利用:canvas画板的功能重新绘制一下,就可以了。 // 压缩前将file转换成img对象 function readImg(file) { return new Promise((resolv

加金开发 227

Django 之 Ajax操作

Ajax Ajax(Asynchronous JavaScript and XML),可以理解为JavaScript执行异步网络请求。通俗的理解的话就是,如果没有Ajax技术,改变网页的一小部分(哪怕是一行文字、一张图片)都需要重新加载一次整个页面,而有了Ajax之后,就可以实现在网页不跳转不刷新的情况下,在网页后台提交数据,部分更新页面内容。 其中最核心的依赖是浏览器提供的XMLHttpRequ...

Hello LinWoW~ ⊙o⊙ 485
上一篇: MD5工具类
下一篇: Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法
justdoit_potato
博客等级 码龄11年 44粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值