jQuery ajax 上传文件

应用场景介绍

页面有一个【导入模板】的按钮,导入一个excel提交给后台做文件解析,并把结果返回给前端展示,再点击【确定按钮】再提交文件给后台接口。
前端借助layui的upload 和 ajax完成。

代码实战

在layui#upload的上传文件成功后的done的方法里展示文件解析出的内容,保存file。点击【提交】按钮之后,用ajax上传文件。

layui.use(['form','upload'],function(){
	var upload = layui.upload;
	form = layui.form;
//上传模板并解析显示到页面上
upload.render({
    elem: '#importExcel'
    , url: '/upload/buildTpl' //导入模板
    , accept: 'file' //只接受excel类型
    , size: 0 //不限制大小
    , done: function (res, index, upload) { //上传后的回调
           if (res.code == "0") {
              layer.msg('文件解析成功');       
            } else {
               layer.msg(res.msg);
               //清空file
                excelFile = null;
            }
         }
        , choose: function (obj) {
           //展示文件名
           obj.preview(function (index, file, result) {
             //上传的文件名显示到页面
             $('#tplFileName').html('【' + file.name + '】');
              //模板文件记录到变量
              excelFile = file;
            });
          }
        });
});

//点击提交
form.on('submit(submitBtn)',function(data){
var formData = new FormData();
formData.append('file',excelFile);//文件对象
$.ajax({
   url: "/apktool/chgApkInfo",
   data: formData,
   type: "post", //要以post方式提交
   //默认为true,会把参数序列化,上传文件不需要序列化
   processData: false,
   contentType: false, //不需要指定contentType
   success: function (result) {
     //上传成功后的回调
   },
   error: function(){
     //出现异常
   }
});

需要注意的是[processData]是jQuery独有的属性。
序列化的意思就是把[data]对应的表单数据,
{key1:value1,key2:value2} 这种对象转成
key1=value1&key2=value2 的RequestBody , 也就是默认的contentType:
application/x-www-form-urlencoder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值