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 相关文章推荐
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
ie8模式下click无反应点击option无反应的解决方法
Oct 11 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 Javascript
jQuery编程中的一些核心方法简介
Aug 14 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
node.js require() 源码解读
Dec 13 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
Angular4学习笔记之准备和环境搭建项目
Aug 01 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 Javascript
如何利用vue实现波谱拟合详解
Nov 05 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php数组键名技巧小结
2015/02/17 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
js数组操作学习总结
2013/11/04 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
python matplotlib中文显示参数设置解析
2017/12/15 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
python 函数中的参数类型
2020/02/11 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
Python hashlib模块的使用示例
2020/10/09 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
餐厅筹备计划书
2014/04/25 职场文书
2014年城管工作总结
2014/11/20 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
详细分析PHP7与PHP5区别
2021/06/26 PHP