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 相关文章推荐
学习ExtJS Panel常用方法
Oct 07 Javascript
CSS和Javascript简单复习资料
Jun 29 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 Javascript
Javascript浅谈之引用类型
Dec 18 Javascript
Node调试工具JSHint的安装及配置教程
May 27 Javascript
文字垂直滚动之javascript代码
Jul 29 Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 Javascript
Vue制作Todo List网页
Apr 26 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
详解element-ui日期时间选择器的日期格式化问题
Apr 08 Javascript
vue中created和mounted的区别浅析
Aug 13 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
php在线生成ico文件的代码
2007/10/09 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
最实用的jQuery分页插件
2016/10/09 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
angular4自定义组件详解
2017/09/28 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
Python简单实现子网掩码转换的方法
2016/04/13 Python
浅谈对yield的初步理解
2017/05/29 Python
基于Python的OCR实现示例
2020/04/03 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
财务与信息服务专业推荐信
2013/11/28 职场文书
化妆品促销方案
2014/02/24 职场文书
离职保密承诺书
2014/05/28 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015员工年度考核评语
2015/03/25 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
利用python做数据拟合详情
2021/11/17 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python