文件上传
程序员文章站
2022-04-08 09:37:30
...
做APP的时候用到了文件上传,但是使用jq的ajax函数需要设置 processData: false, 不让文件自动序列化,导致传到后台的数据是obj类型的数据,后台解析不了直接,报token 不存在。所以抛弃了ajax 自己决定封装一个原生js的上传文件。
$.ajax({
type: 'POST',
url: hurl + '/api/Image/upload',
data: data,
cache: false,
processData: false,
contentType: false ,
success:function(res) {
// 拿到提交的结果
console.log('结果', res);
let data = JSON.parse(res);
console.log("data",data);
if(data.code == -1){
mui.toast(data.message);
}
if(data.code == 1){
mui.toast("图片上传成功");
}
},
error:function (err) {
console.error(err);
}
});
一下就是我自己封装的函数 可以参考:
//fileArr 就是选择图片的时候讲图片存到这个数组里面
function upimg(){
var files = fileArr;
console.log(files);
upladfile(files,function(res){
console.log(res);
})
}
//上传文件方法
function upladfile(file,func) {
let files = file||null,
xhr,
url = hurl + '/api/Image/upload',//服务器路径
form = new FormData();//formdata对象
console.log(files);
for (let i = 0; i < files.length; i++) {
form.append("image", files[i]); // 文件对象
}
form.append("access_token", acctoken()); // 可以增加表单数据
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
xhr.onload = function(evt){
var data = JSON.parse(evt.target.responseText);
func(data);
}
xhr.onerror = function(){ //请求失败
mui.toast("文件上传失败");
};
xhr.send(form); //开始上传,发送form数据
}
上一篇: MVC+Ligerui开发项目之-ligerPopupEdit
下一篇: javaWeb之jsp