Ajax请求参数为文件类型
1、图片用get请求,回调函数中返回的数据就是流文件,在回调函数中再使用post请求
2、JS将文件像form表单一样提交到后台 : https://www.cnblogs.com/HeKaiYue/p/7147752.html (亲测有效)
这里使用到XMLHttpRequest 2级中的 FormData 对象 : https://blog.csdn.net/saharalili/article/details/79002568
(题外话:个人经验 XMLHttpRequest 1级中的send()方法只能是字符串作为参数,一般是形如 "user="+username+"&pwd="+password 这种参数。参考;
XMLHttpRequest 2级中send()方法的参数增加了FormData 对象的参数。ajax要发送文件,必须把请求体转换为 FormData 对象发送。)
<div>
<input type="file" id="myfile">
<input type="button" value="上传" onclick="HeadPortraitPicture()">
</div>
function HeadPortraitPicture()
{
if (document.getElementById('myfile').files[0] != null) {//判断上传的文件是否为空
var fd = new FormData();
fd.append("file", document.getElementById('myfile').files[0]);//这是获取上传的文件
fd.append("api_id", "198ae4a939f54cf99116fdefffcb3e40");//这是获取上传的文件
fd.append("api_secret", "86090f1e697d436f85b0552d934a7df4");//这是获取上传的文件
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://cloudapi.linkface.cn/ocr/idcard");//要传到后台方法的路径
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);//返回来的数据
xhr.addEventListener("error", uploadFailed, false);//返回异常
xhr.addEventListener("abort", uploadCanceled, false);//返回连接异常
xhr.send(fd);//放入文件发送到后台
}
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
//var percentComplete = Math.round(evt.loaded * 100 / evt.total);//可以在这里接收进度条数据
}
else {
alert("无法计算!");
}
}
function uploadComplete(evt) {
/* 服务器返回数据*/
var message = evt.target.responseText;//接收返回来的数据
} function uploadFailed(evt) {
alert("上传出错.");
} function uploadCanceled(evt) {
alert("上传已由用户或浏览器取消删除连接.");
}
3、浏览器出于安全考虑,选择上传的图片必须由用户来选择,也就是说标签中不能设置默认文件(不像其它的表单可以设置默认值)。js中也不能修改 input[type="file"] 表单的value属性值,
value属性是一个只读属性,是一个假路径,基本没什么用。 参考:https://segmentfault.com/q/1010000009883479
4、使用jquery提交FormData数据 : 参考链接
html的代码和第2点的一样的
function HeadPortraitPicture() {
var fd = new FormData();
fd.append("file", document.getElementById('myfile').files[0]);//这是获取上传的文件
fd.append("api_id", "198ae4a939f54cf99116fdefffcb3e40");//这是获取上传的文件
fd.append("api_secret", "86090f1e697d436f85b0552d934a7df4");//这是获取上传的文件
$.ajax({
url: "https://cloudapi.linkface.cn/ocr/idcard",
type: 'POST',
data: fd,
contentType: false,
async:true,
processData: false,
success: function (res) {
console.log(res);
}
});
}
Http请求中请求头Content-Type 为 form-data、x-www-form-urlencoded、raw、binary的区别
1、参考:https://blog.csdn.net/ye1992/article/details/49998511 或 https://www.jianshu.com/p/45a7c3de9281
Ajax请求参数为文件类型的更多相关文章
- SSM框架下,使用ajax请求上传文件(doc\docx\excel\图片等)
1.准备工作 1.1.添加上传必要jar包 <dependency> <groupId>commons-io</groupId> <artifactId> ...
- JQuery Ajax 请求参数 List 集合处理
引言 JQuery Ajax 发送请求参数一般都是基本类型,比如 String.int:那么,请求参数如果是 List 集合应该如何处理呢? 情况一:Aajx 发送 List 类型请求参数 举例如下: ...
- Ajax请求参数较长导致请求失败
Ajax请求参数比较长,第5行参数大概1100个字符吧,是接口的请求报文. $.ajax({ type:"POST", url:"${ctx}/test.action?m ...
- Ajax请求参数到一个URL包含下划线或者v(_、v)
Ajax请求参数到一个URL包含下划线或者v 初学者的我,在F12时,看到这个地址就会很奇怪,不理解什么东西 经过查找了解到浏览器默认开启缓存,该参数不是其他请求所必须的,把它去掉不影响数据的获取 h ...
- springmvc:请求参数绑定集合类型
一.请求参数绑定实体类 domain: private String username; private String password; private Double money; private ...
- jquery ajax 请求参数详细说明 及 实例
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- Ajax 请求下载 Execl 文件
通过Ajax请求下载Execl 的问题,掉进一个坑里半个多小时,特此来记录一下 . 起初 我误以为是后台的问题,然而调试了一下并不是这样的,也不会报错,且进入了success 函数. 以下的事件及请 ...
- Ajax请求参数解释
ajax常用的两个请求是get和post,而springmvc的控制层可以接收ajax请求. 但是这个过程非常灵活,变化很大,容易出错. $.ajax({ url : SITE_PATH + &quo ...
- ajax请求不能下载文件(转载)
最近在做文件下载,后台写了个控制层,直接走进去应该就可以下载文件,各种文件图片,excel等 但是起初老是下载失败,并且弹出下面的乱码: 前台请求代码: $('#fileexcel').unbind( ...
随机推荐
- Vue的安装和使用详解(一)
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与 ...
- %d format: a number is required, not str。
python代码: attr_sql = "INSERT INTO `ym_attribute` (`attr_name`, `type_id`, `attr_value`, `attr_s ...
- form表单submit事件
form表单submit事件同时会触发form表单中button按钮的click事件 <!DOCTYPE html> <html> <head> <meta ...
- Android 将drawable下的图片转换成bitmap、Drawable
将drawable下的图片转换成bitmap . Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xxx ...
- c# networkcomms 3.0实现模拟登陆总结 转载https://www.cnblogs.com/zuochanzi/p/7039636.html
最近项目需要做一个客户查询状态系统,当前上位机缺少服务功能,于是找到了networkcomms 开源框架,作为项目使用. 最新版networkcomms 下载地址:https://github.com ...
- DataFrame读取CSV文件
读取csv的代码: print pd.read_csv("ex1.csv") print "\n" print "Can also use read ...
- Jmeter脚本如何在Linux通过no GUI的方式运行 命令行传递参数
本文主要介绍Jmeter脚本如何在Linux通过no GUI的方式运行.总共分三部分: 1.Linux下JDK的安装及环境变量的配置 2.Linux下Jmeter的安装及环境变量的配置 3.运行结果的 ...
- 20-python基础-python3-reversed()函数
描述 reversed 函数返回一个反转的迭代器. 语法 reversed(seq) 参数 seq -- 要转换的序列,可以是 tuple, string, list 或 range. # 字符串 s ...
- 12-vim-撤销和删除命令-02-删除文本
删除文本 命令 英文 功能 x cut 删除光标所在字符 d(移动命令) delete 删除移动命令对应的内容 dd delete 删除光标所在行 D delete 从光标位置删除至行尾 注: 如果使 ...
- nuxt项目在windows环境下安装部署
1.nodejs安装,地址 https://nodejs.org/en/ 2.在本地项目中运行npm run build 命令将开发好的项目打包生成.nuxt文件夹,然后把.nuxt文件夹.nux ...