BootStrap Fileinput上传插件使用实例代码


Posted in Javascript onJuly 28, 2017

0、效果图

BootStrap Fileinput上传插件使用实例代码

1、引入js、css(建议css放在html头部,js加载在html底部)

<link href="~/Content/fileinput.min.css" rel="external nofollow" rel="stylesheet" />
<script src="~/scripts/jquery-1.10.2.min.js"></script>
<script src="~/scripts/fileinput.js"></script>
<script src="~/scripts/zh.js"></script>

2、html

<input type="file" id="uploaddoc" name="file" class="file" multiple />//上传按钮 multiple为可多文件上传 
<input type="hidden" id="Doc" name="doc" value="" />//保存文件路径

3、初始化

$("#uploaddoc").fileinput({ 
    language: 'zh', 
    uploadUrl: '/Form/upload',//后台上传方法 
    allowedFileExtensions: ['doc', 'docx'],//上传文件扩展名 
    shouUpload: false, 
    showRemove: false, 
    browseClass: 'btn btn-danger', 
    maxFileSize: 5000, 
    maxFileNum: 10, 
    allowedPreviewTypes: null, 
    previewFileIconSettings: { 
      'doc': '<i class="fa fa-file-word-o text-muted"></i>' 
    }, 
    previewFileExtSettings: { 
      'doc': function (ext) { 
        return ext.match(/(doc|docx)$/i); 
      } 
    } 
  });

4、回调方法

var List = new Array();//声明保存上传文件路径数组对象 
  //上传 - 删除 
  $('#uploaddoc').on('filesuccessremove', function (event, key) { 
    var abort = true; 
    if (confirm("确定要删除已上传的文件吗?")) { 
      abort = false; 
    } 
    var index1; 
    $.each(List, function (index, item) { 
      if (item.KeyID == key) {//默认fileinput.js的key与KeyID不一致,需要改动源码,详情见下文 
        index1 = index; 
        $.post("/Form/uploaddelete", { key: item.KeyID, path: item.path });//删除以上传到本地的文件 
      } 
    }); 
    List.splice(index1, 1); 
    var path = ""; 
    $.each(List, function (index, item) { 
      path += item.path; 
    }); 
    $("#Doc").val(path);//修改保存的文件路径 
  }); 
  //取消上传事件,左上角的取消按钮 
  $('#uploaddoc').on('filecleared', function (event, files) { 
    $.each(List, function (index, item) { 
      $.post("/Form/uploaddelete", { key: "all", path: item.path }); 
    }); 
    List = new Array();//清空保存的文件路径数组对象,这里是赋值给新的空对象,应该可以优化为删除以保存的所有值 
    $("#Doc").val(""); 
  }); 
 
  //上传 - 成功 
  $("#uploaddoc").on("fileuploaded", function (event, data, previewId, index) { 
    var form = data.form, files = data.files, extra = data.extra, 
    response = data.response, reader = data.reader; 
    List.push({ path: response.path, KeyID: previewId }) 
    $("#Doc").val($("#Doc").val() + response.path); 
    //$("#Doc").val(List); 
  });

BootStrap Fileinput上传插件使用实例代码

5、后台上传方法

//上传方法  
public JsonResult Upload() 
    { 
      HttpPostedFileBase file = Request.Files["file"]; 
      if (file == null) 
      { 
        return Json(new { error = "上传异常" }); 
      } 
      var ext = Path.GetExtension(file.FileName); 
      var filename = Path.GetFileNameWithoutExtension(file.FileName); 
      var serverfilenname = Guid.NewGuid().ToString("n") + "_" + filename + ext; 
      try 
      { 
        var path = "/File"; 
        var dic = string.Format("{0}/{1}/{2}/{3}", path, DateTime.Today.Year.ToString(), DateTime.Today.Month.ToString(), DateTime.Today.Day.ToString()); 
        if (!Directory.Exists(Server.MapPath(dic))) 
        { 
          Directory.CreateDirectory(Server.MapPath(dic)); 
        } 
        var webpath = string.Format("{0}/{1}", dic, serverfilenname); 
        var serverpath = Path.Combine(Server.MapPath(dic), serverfilenname); 
        file.SaveAs(serverpath); 
        return Json(new { 
          url = "/Form/uploaddelete",//定义要删除的action,没有用到可删掉 
          key = serverfilenname, 
          path = webpath }); 
      } 
      catch (Exception ex) 
      { 
        return Json(new { error = "上传异常" + ex }); 
      } 
    } 
//删除本地文件方法 
public JsonResult UpLoadDelete() 
    { 
      try 
      { 
        var key = Request.Params["key"]; 
        var path = Request.Params["path"]; 
        if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(path)) 
        { 
          return Json(false, JsonRequestBehavior.DenyGet); 
        } 
        path = Server.MapPath(path); 
        if (System.IO.File.Exists(path)) 
        { 
          System.IO.File.Delete(path); 
          return Json(true, JsonRequestBehavior.DenyGet); 
        } 
        else 
        { 
          return Json(false, JsonRequestBehavior.DenyGet); 
        } 
      } 
      catch (Exception) 
      { 
        return Json(false, JsonRequestBehavior.DenyGet); 
      } 
    }

6、缺点

尚未研究预览功能

尚有优化空间

7、说明

代码粘贴后可直接使用,后台框架为.net mvc5,默认母版页有加载bootstrap样式和js 如无样式请添加对bootstrap的脚本

引用

插件api地址:http://plugins.krajee.com/file-input#events 

上网查了好多相关资料 都不完整,最后只有这个api可以看了,最后终于找到左上角关闭按钮的回调事件

总结

以上所述是小编给大家介绍的BootStrap Fileinput上传插件使用实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
JQuery记住用户名和密码的具体实现
Apr 04 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
Mar 30 Javascript
jquery点击改变class并toggle的实现代码
May 15 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 Javascript
layui表格数据重载
Jul 27 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
Jan 08 Javascript
Vue事件处理原理及过程详解
Mar 11 Javascript
解决React Native端口号修改的方法
Jul 28 #Javascript
vue+vux实现移动端文件上传样式
Jul 28 #Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
Jul 28 #Javascript
vue使用vue-cli快速创建工程
Jul 28 #Javascript
用JS实现简单的登录验证功能
Jul 28 #Javascript
基于JavaScript实现图片连播和联级菜单实例代码
Jul 28 #Javascript
vue中七牛插件使用的实例代码
Jul 28 #Javascript
You might like
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
vue实现验证用户名是否可用
2021/01/20 Vue.js
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
机器学习python实战之决策树
2017/11/01 Python
Python3 操作符重载方法示例
2017/11/23 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
浅析Python 责任链设计模式
2020/09/11 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
通信工程专业求职信
2014/06/04 职场文书
导游欢迎词范文
2015/01/23 职场文书
施工安全保证书
2015/05/09 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
Python 多线程处理任务实例
2021/11/07 Python
解决xampp安装后Apache无法启动
2022/03/21 Servers