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 程序编码规范
Nov 23 Javascript
jQuery validate验证插件使用详解
May 11 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
js编写简单的计时器功能
Jul 15 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
vue 下列表侧滑操作实例代码详解
Jul 24 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
Javascript模块化机制实现原理详解
Apr 02 Javascript
react 不用插件实现数字滚动的效果示例
Apr 14 Javascript
Vue 数据绑定的原理分析
Nov 16 Javascript
Vue全局事件总线你了解吗
Feb 24 Vue.js
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
提问的智慧
2006/10/09 PHP
php实现短信发送代码
2015/07/05 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
javascript验证身份证号
2015/03/03 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
Python set常用操作函数集锦
2017/11/15 Python
python生成密码字典的方法
2018/07/06 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
十八届三中全会宣传方案
2014/02/21 职场文书
高考备战决心书
2014/03/11 职场文书
给孩子的新年寄语
2014/04/08 职场文书
食品安全宣传标语
2014/06/07 职场文书
实习护士自荐信
2014/06/21 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
事业单位年度考核评语
2014/12/31 职场文书
2015年材料员工作总结
2015/04/30 职场文书