jqueryfileupload插件ie9遇到的问题

一、Chrome浏览器:

1、引入js

   jquery.ui.widget.js

   jquery.fileupload.js

2、页面元素

   <input type="file"name="Filedata" class="ebtn"

      style="width:22%;height:44px;background-color:#fff;"/>

3、js初始化input

functioninitUploadPlugin(){

   var iframe = false;

   if(isIe9()){

      iframe = true;

   }

   $('input[name=Filedata]').fileupload({ 

        autoUpload: true,//是否自动上传 

        url:'/etrc/api/user/file_upload?savePath=/appendix/

            &maxFileSize=10',//上传地址 

        dataType: 'json',

       iframe:iframe,

        add: function(e, data) {

          eLoading(true);

          var acceptFileTypes = /(\.|\/)(PDF|pdf)$/i;

         if(data.originalFiles[0]['type'].length &&!acceptFileTypes.test(data.originalFiles[0]['type'])) {

              layer.msg("请上传pdf格式文档");

              eLoading(false);

             return;

          }

          if(data.originalFiles[0]['size'] && data.originalFiles[0]['size'] > (10*1024*1024)) {

              layer.msg("上传文档必须小于10MB");

              eLoading(false);

              return;

          }

          data.submit();

       },

       done:function (e, data) {//设置文件上传完毕事件的回调函数 

          var res_data = data.result;

         if (200 == res_data.code) {

            var ext=res_data.info.type.split('.')

                      .pop().toLowerCase();

          }else{

              if(res_data.msg){

                eLoading(false);

                  layer.msg(res_data.msg,{icon:2});

                   return ;

              }

          }

        },

        always: function (e, data) {//设置文件上传完毕事件的回调函数 

          eLoading(false);

          layer.closeAll('loading');

        },

        fail:function (e, data) {//设置文件上传完毕事件的回调函数

          console.log(data);

          layer.msg("上传失败");

        },

     });

}

Chrome浏览器中按以上步骤即可实现文件上传,在ie9(与通过高版本ie调整为ie9不同)中会遇到如下问题:

二、IE9

1、判断文件格式与大小:

   data.originalFiles[0]中只有name属性,获取不到typesize

   解决:

      a.type:

      var type = data.originalFiles[0]['name'].split(".").pop();

       if(type!="pdf"&&type!="PDF"){

          layer.msg("请上传pdf格式文档");

          eLoading(false);

          return;

       }

      b.size:

      后台判断,执行完“add,进入后台“/etrc/api/user/file_upload”,     Filedata.length()即可获取文件大小。

2、后台获取到的filedata为null

   解决:a.引入js jquery.iframe-transport.js

        b.fileupload初始化方法中加上①②两端代码

3、通过上述1、2步骤后,后台上传成功,但在前台又出现提示下载的问题。

   解决:开始后台返回使用的是:renderJSON(info),修改为:                  renderText(JSONObject.fromObject(info).toString())

三、为美化上传效果,有可能不直接使用input,而是通过其他元素触发input。

   如:

<input type="file"name="Filedata" class="ebtn"id='1' style="

   width:22%;height:44px; background-color:#fff;display:none;">

<label class="ebtnebtn-orange" style="width:83px;height:28px"    name="FiledataBtn" for="1">上传附件</label>

$('div[name=FiledataBtn]').click(function(){

   $(this).prev().trigger("click");

});  

注意标红部分,否则无效果。

 

四、使用过程中参考资料:

   http://www.jq22.com/jquery-info230

   https://www.cnblogs.com/silentjesse/p/3770253.html

   https://blog.csdn.net/m0_37808356/article/details/77089686

   https://segmentfault.com/a/1190000010816223

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值