Ajax使用FormData对象上传文件
来源:互联网 发布:淘宝达人的推广方式 编辑:程序博客网 时间:2024/05/16 13:54
一:网上查到的归纳
FormData
对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest
发送这个"表单"。var formData = new FormData();formata.append('file', $('#file')[0].files[0]);$.ajax({ url: '/upload', type: 'POST', cache: false, data: formData, processData: false, contentType: false}).done(function(res) {}).fail(function(res) {});
processData
设置为false
。因为data
值是FormData
对象,不需要对数据做处理。<form>
标签添加enctype="multipart/form-data"
属性。cache
设置为false
,上传文件不需要缓存。服务器端读文件
从Servlet 3.0
开始,可以通过 request.getPart()
或 request.getPars()
两个接口获取上传的文件。
这里不多说,详细请参考官网教程 Uploading Files with Java Servlet Technology 以及示例 The fileupload Example Application
二:使用
1、多个input上传文件:
//保存上传图片后返回的idvar json={};//多个input的name均设置为id_card$(document).on("change","input[name='id_card']",function(){ var $this = this; var formData = new FormData();formData.append('file', this.files[0]);$.ajax({ url: "${api}/upload_image", type: "POST", cache: false, data: formData, processData: false, contentType: false}).done(function(res) {json[$this.id]=res.file_id;$($this).prev().attr('src',res.image_url);//刷新img$.cookie($this.id, res.image_url);//将返回的图片url保存到cookie,防止丢失}).fail(function(res) {alert("上传失败");});});
2、一个input上传多个文件:
需要在
<input type="file">
里添加multiple
或multiple="multiple"
属性$(document).on("change","input[name='work_card']",function(){ var $this = this; var pre = 'work_card_file_id';//json中key的前缀
//我手动限制同时只能传3张if(this.files.length>3){$.modal({ text: "同时最多只能选择3张照片", buttons: [ { text: '确定', } ] });return; }//因为我需要每张图片的返回信息,所以设置async:false(反之如果设置成异步,文件会全部上传完才返回值,此时只返回了最后一个文件的相应信息。) for(var i=0;i<this.files.length;i++){ var formData = new FormData(); formData.append('file', this.files[i]); $.ajax({ url: "${api}/upload_image", type: "POST", cache: false, data: formData, processData: false, async:false, contentType: false }).done(function(res) { json[pre+(i+1)]=res.file_id; $.cookie(pre+(i+1), res.image_url); }).fail(function(res) {alert("上传失败"); }).always((function(res) {getCookie();}));//getCookie方法是刷新页面 }});
1 0
- Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- JQuery Ajax使用FormData对象上传文件 图片
- 通过Ajax使用FormData对象无刷新上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过Ajax使用FormData对象无刷新上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- Ajax使用FormData对象实现无刷新上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 通过jQuery Ajax使用FormData对象上传文件
- 【Bash百宝箱】shell数组
- Android动画详解
- session共享之nginx+tomcat+redis
- JSTL学习笔记
- TortoiseGit安装与图形界面操作
- Ajax使用FormData对象上传文件
- Log4j学习笔记
- 数据结构实验之栈四:括号匹配
- LeetCode142—Linked List Cycle II
- DHCP协议
- 【Bash百宝箱】shell目录栈(dirs、pushd、popd)
- spark性能调优之广播大变量
- Maven学习笔记
- Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)