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 相关文章推荐
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
Sep 05 Javascript
原生JS实现拖拽图片效果
Aug 27 Javascript
javascript HTML5 canvas实现打砖块游戏
Jun 18 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 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 可阅读随机字符串代码
2010/05/26 PHP
php动态函数调用方法
2015/05/21 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
angular.js分页代码的实例
2016/07/27 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
英国探险旅游专家:Explore
2018/12/20 全球购物
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
小学生表扬稿范文
2015/05/05 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
使用Python解决图表与画布的间距问题
2022/04/11 Python