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 面向对象编程(一) 封装
Aug 28 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
删除Javascript Object中间的key
Nov 18 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
判断横屏竖屏(三种)
Feb 13 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
JavaScript的Object.defineProperty详解
Jul 09 Javascript
详解jenkins自动化部署vue
May 14 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
微信小程序实现时间进度条功能
Nov 17 Javascript
vue-autoui自匹配webapi的UI控件的实现
Mar 20 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 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
中国第一家无线电行
2021/03/01 无线电
分享PHP header函数使用教程
2013/09/05 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
微信小程序解析富文本过程详解
2019/07/13 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python查询sqlite数据表的方法
2015/05/08 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
pycharm快捷键汇总
2020/02/14 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
工商管理毕业生推荐信
2013/12/24 职场文书
青年文明号口号
2014/06/17 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书