ajax+java+传文件,HTML5+Ajax上传文件

bVtcTe

HTML

input类型设为file:

如果想上传多文件,可添加multiple

用accept="MIME_type"限制提交的文件类型,用逗号隔开的 MIME 类型列表(服务器端也要最好类型检测双保险),如:

获取文件内容

JavaScript:

var file = document.getElementById('fileToUpload').files[0];

jQuery:

var file = $("#img_input").prop("files")[0];

上传

XMLHttpRequest Level 2添加了一个新的接口FormData。利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件。比起普通的Ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。

// 创建

var form_data = new FormData();

// 获取文件

var file_data = $("#img_input").prop("files")[0];

// 把所以表单信息

form_data.append("id", "001");

form_data.append("name", "test");

form_data.append("img", file_data);

$.ajax({

type: "POST",

url: "....",

dataType : "json",

processData: false, // 注意:让jQuery不要处理数据

contentType: false, // 注意:让jQuery不要设置contentType

data: form_data

}).success(function(msg) {

console.log(msg);

}).fail(function(msg) {

console.log(msg);

});

多文件上传

方法一 :一次性上传多个文件

如果后台接口允许多文件上传,就把文件存到一个变量后上传。

方法二 :一次性上传多个文件

如果后台接口要求单个文件,就循环获取文件信息提交,Ajax使用同步上传async: false。

跨域

JSONP是使用GET方法,无法发送文件。可以让后台开启CORS,Ajax也使用跨域crossDomain: true即可。

$.ajax({

type: "POST",

url: "....",

dataType : "json",

crossDomain: true,

processData: false, // 注意:让jQuery不要处理数据

contentType: false, // 注意:让jQuery不要设置contentType

data: form_data

}).success(function(msg) {

console.log(msg);

}).fail(function(msg) {

console.log(msg);

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值