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 NaN和Infinity特殊值 [译]
Sep 20 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
Sep 19 Javascript
JS去除重复并统计数量的实现方法
Dec 15 Javascript
javascript实现右下角广告框效果
Feb 01 Javascript
js实现横向拖拽导航条功能
Feb 17 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
详解Vue结合后台的列表增删改案例
Aug 21 Javascript
js面试题之异步问题的深入理解
Sep 20 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 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
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP 简单数组排序实现代码
2009/08/05 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
php限制文件下载速度的代码
2015/10/20 PHP
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
js打造数组转json函数
2015/01/14 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
js实现抽奖功能
2020/11/24 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
顶碗少年教学反思
2014/02/21 职场文书
公司委托书范本
2014/04/04 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
小学开学标语
2014/07/01 职场文书
留学推荐信怎么写
2015/03/26 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技