Bootstrap Fileinput 4.4.7文件上传实例详解


Posted in Javascript onJuly 25, 2018

本实例所做功能为发送带附件邮件,可以上传多个附件,操作为选择一个附件以后自动上传,然后继续选择附件,填写完表单其他信息,点击保存发送带附件邮件。

HTML标签

<input id="fileUpload" type="file" name="file" data-show-preview="true" multiple/>

js初始化,设置全局文件名参数

var fileName = [];
function initFileInput(id, url) {
    $("#" + id).fileinput({
      language: 'zh', 
      uploadAsync:false,
      uploadUrl:url,
      browseClass: "btn btn-secondary",
      textEncoding:"UTF-8",
      showUpload: false,
      showPreview :true,
      dropZoneEnabled: false,
      maxFileCount:5,
      fileActionSettings:{
        showUpload: true
      },
      enctype:'multipart/form-data',
      msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
    }).on("filebatchselected", function(event, files) {
      $("#fileUpload").fileinput("upload");
    }).on("filebatchuploadsuccess", function (event, data, previewId, index){
      if(data.response.success == true)
      {
        fileName.push(data.response.fileName);
      }else{
        alert("上传失败!");
      }
      $("#fileUpload").fileinput("clear");
      $("#fileUpload").fileinput("reset");
    }).on('fileerror', function(event, data, msg) {
       alert(msg);
    });
  }

java后台上传文件代码

@RequestMapping(value="/fileupload")
  @ResponseBody
  public Map<String, Object> fileUpload(HttpServletRequest request, HttpServletResponse response) {
    ResourceBundle bundle = PropertyResourceBundle.getBundle("application");
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
    Map<String,MultipartFile> fileMap = multipartRequest.getFileMap();
    String rootPath = bundle.getString("upLoadUrl");
    String filePath = rootPath;
    Map<String, Object> map = new HashMap<>();
    map = uploadFiles(filePath,fileMap);
    return map;
  }

实际上传操作,返回上传操作经过处理的文件名,保证服务器端文件名唯一

public Map<String, Object> uploadFiles(String savePath,Map<String,MultipartFile> fiLeMap){
    Map<String, Object> map = new HashMap<>();
    try {
      String fileName = "";
      if(fiLeMap!=null){
        for(Map.Entry<String, MultipartFile> entity:fiLeMap.entrySet()){
          MultipartFile f = entity.getValue();
          if(f != null && !f.isEmpty()){
            String uuid = UUID.randomUUID().toString();
            fileName = uuid + "#" + f.getOriginalFilename();
            File newFile = new File(savePath + "/" + fileName); 
            f.transferTo(newFile);
          }
        }
      }
      map.put("success", true);
      map.put("fileName", fileName);
      return map;
    }catch (Exception e) {
      map.put("success", false);
      return map;
   }
}

ajax提交其他表单参数和所传附件文件名集合

$.ajax({
      type: "POST",
      url: 所需要请求地址,
      dataType: "json",
      traditional:true,
      data: {
        service:$("#service").select2('val').replace("All",""),
        startTime:$("#start").val(),
        endTime:$("#end").val(),
        reason:$("#reason").val(),
        fileName:JSON.stringify(fileName),
        outterEmail:isOutterEmail,
        innerEmail:isInnerEmail,
        isSendEmail:isSendEmail,
        subService:$("#subService").select2('val'),
        runningStatus:$("#runningStatus").select2('val')
      },
      success: function(data){
        $("#loadingModal").modal("hide");
        fileName.splice(0,fileName.length);
        alert(data.msg);
        if(data.success) {
          location.href = "revision";
        }
      },
      error:function(xhr) {
        $("#loadingModal").modal("hide");
        alert("保存失败");
      }
    });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在javascript中对于DOM的加强
Apr 11 Javascript
jquery移动listbox的值原理及代码
May 03 Javascript
javascript完美拖拽的实现方法
Sep 29 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
JS模拟实现哈希表及应用详解
May 04 Javascript
js正则表达式校验指定字符串的方法
Jul 23 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
关于vue-cli3打包代码后白屏的解决方案
Sep 02 Javascript
vue2和vue3的v-if与v-for优先级对比学习
Oct 10 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 #Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 #Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 #Javascript
Vue与Node.js通过socket.io通信的示例代码
Jul 25 #Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
Jul 25 #jQuery
详解Vue源码学习之callHook钩子函数
Jul 25 #Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 #Javascript
You might like
php 时间计算问题小结
2009/01/04 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
详解JavaScript中的函数、对象
2019/04/01 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
关于layui toolbar和template的结合使用方法
2019/09/19 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
python删除某个字符
2018/03/19 Python
python做反被爬保护的方法
2019/07/01 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
python+requests接口自动化框架的实现
2020/08/31 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
Python是如何进行类型转换的
2013/06/09 面试题
毕业生欢送会主持词
2014/03/31 职场文书
作风建设演讲稿
2014/05/23 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技