bootstrap inputfile 使用-上传,回显
近期用bootstrap 做前端的上传,功能涉及到上传时就是召网上的教程随便弄一搜一大把,但是做到修改页面时候不知道页面该如何回显,折腾了一阵子才完成遂记录下来希望能给看到的小伙伴有点启发吧。
首先是上传的功能
上传要求支持图片和各种其他种类的文件,效果基本 如下了,点击上传,依次就是调后台接口把文件送上,返回一个文件的路径,可以直接请求的服务器地址。
html代码如下:基本的框子吧。
<div class="file-loading">
<input id="fileinput-demo-0" name="file" type="file" multiple>
</div>
配套的js:
var taskFiles=[];
$(document).ready(function () {
//上传文件
$("#fileinput-demo-1").fileinput({
language: 'zh', //设置语言
uploadUrl:ctx + "api/common/upload", //上传的地址
// allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后缀
// uploadExtraData:{"id": 1, "fileName":'123.mp3'},
uploadAsync: true, //默认异步上传
showUpload:true, //是否显示上传按钮
showRemove :false, //显示移除按钮
showPreview :true, //是否显示预览
showCaption:false,//是否显示标题
browseClass:"btn btn-primary", //按钮样式
dropZoneEnabled: false,//是否显示拖拽区域
// minImageWidth: 50, //图片的最小宽度
// minImageHeight: 50,//图片的最小高度
// maxImageWidth: 1000,//图片的最大宽度
// maxImageHeight: 1000,//图片的最大高度
//maxFileSize:0,//单位为kb,如果为0表示不限制文件大小
//minFileCount: 0,
maxFileCount:10, //表示允许同时上传的最大文件个数
enctype:'multipart/form-data',
validateInitialCount:true
// previewSettings: {//图片显示
// image: {width: "80px", height: "60px"},
// }
// previewFileIcon: "<iclass='glyphicon glyphicon-king'></i>",
// msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
}).on("fileuploaded", function (event, data, previewId, index){
// 这里上传会自动调用上面配置的上传地址,声场的previewId就是图片的元素id,
// $('#' + previewId).attr('fileid', data.response.fileName);
var file={
previewId:previewId,
fileName:data.response.fileName
};
taskFiles.push(file);//将每一个上传成功的文件放到初始的一个数组里,
console.log(taskFiles);
}).on('filesuccessremove', function (event, previewId, extra) {
//在移除事件里取出所需数据,并执行相应的删除指令,从数组内删除,可以调服务器接口做服务端删除。
console.log(previewId)
for(var i=0;i<taskFiles.length;i++){
if(taskFiles[i].previewId==previewId){
taskFiles.splice(i,1);
}
}
console.log(taskFiles);
});
我们上传三个文件,对用控制台打印出三个文件信息,
下面看一下修改页面的回显操作,html 增加了一个 隐藏的元素可以不考虑我的代码里有这里不是必须的。
<div class="form-group">
<label class="col-sm-3 control-label">任务文件:</label>
<div class="col-sm-8">
<div class="file-loading">
<input id="fileinput-demo-1" name="file" type="file" multiple> </div>
</div>
</div>
<input type="hidden" name="filePaths" id="carousel_imgs_hidden"/>
js如下
var carouselImgs = [] ; var fileNames="xxx.jpg,xxx.mp4";
// 获取协会图片介绍getInitFiles(taskInfo.taskFiles)
var initialPreviews = (fileNames ? fileNames.split(","):[] );
var initialPreview = [] ;
var initialPreviewConfig = [] ; for (var i = 0; i < initialPreviews.length; i++) {
var fileName = initialPreviews[i] ;
if (fileName != null && fileName !=''){
var delImg = new Object() ;
delImg = generFilDel(fileName);
initialPreview.push(fileName) ;
initialPreviewConfig.push(delImg) ;
console.log(initialPreviewConfig);
carouselImgs.push(fileName) ;
}
}
$("#carousel_imgs_hidden").val(carouselImgs) ;
// 协会图片介绍
$("#fileinput-demo-1").fileinput({
uploadUrl: "/api/common/upload",
language: 'zh',
// allowedFileExtensions: ['image', 'html', 'text', 'video', 'audio', 'flash', 'object','other'],
//dropZoneEnabled:false,
showClose:false,
showCaption: false,
maxFileCount:10,
showRemove:false,
uploadAsync: true,
enctype: 'multipart/form-data',
validateInitialCount:true,
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
fileActionSettings:{
showRemove: true,
showUpload: false,
showDownload: true,
},
// previewSettings: {
// image: {width: "200px", height: "160px"},
// }, // allowedPreviewTypes: [];
previewFileType: ['image', 'html', 'text', 'video', 'audio', 'flash'],
allowedPreviewTypes: ['image','video', 'audio'],
overwriteInitial: false,
initialPreviewAsData: true,
initialPreviewFileType: 'image', //'html', 'text', 'video', 'audio', 'flash', 'object'],
initialPreviewShowDelete:true,
initialPreview:initialPreview,
initialPreviewConfig:initialPreviewConfig
// }).on('filepredelete', function(event, key) {
// console.log('Key = ' + key);
}).on("fileuploaded", function(event, data, previewId, index) {
var fileName = data.response.fileName;
$("#"+previewId).attr("fileName", fileName) ;
var carouselImgs=$("#carousel_imgs_hidden").val().split(",");
// var hiddenFilePaths=$("#carousel_imgs_hidden").val();
// carouselImgs =hiddenFilePaths?[]:hiddenFilePaths.split(",");
carouselImgs.push(fileName) ;
$("#carousel_imgs_hidden").val(carouselImgs) ;
}).on("filesuccessremove", function(event, previewId, extra) {
console.log("删除文件");
var fileName = $("#"+previewId).attr("fileName");
var carouselImgs=$("#carousel_imgs_hidden").val().split(",");
// carouselImgs =hiddenFilePaths?[]:hiddenFilePaths.split(",");
var newCarouselImgs = [] ;
for (var i = 0; i < carouselImgs.length; i++) {
if (carouselImgs[i] != fileName)
newCarouselImgs.push(carouselImgs[i]);
}
carouselImgs = newCarouselImgs ;
$("#carousel_imgs_hidden").val(carouselImgs) ;
}).on('filepredelete', function(event, key, jqXHR, data) {
console.log('Key = ' + key);
removeHidden(key);
});
//$("#fileinput-demo-1").fileinput('_initFileActions');//这行代码就是调用绑定删除事件的
function removeHidden(fileName){
var hiddenFilePaths=$("#carousel_imgs_hidden").val().split(",");
for (var i = 0; i < hiddenFilePaths.length; i++) {
if (hiddenFilePaths[i] == fileName){
hiddenFilePaths.splice(i,1);
break;
}
}
console.log(hiddenFilePaths);
$("#carousel_imgs_hidden").val(hiddenFilePaths);
}
function generFilDel(fileName){
var o=new Object();
o.caption = fileName ;
o.url = "/api/common/del";
o.key = fileName;
if(fileName==null||fileName.indexOf(".")==-1){
//return {"type":null,"fileType":null};
o.type="image";
o.filetype="image/"+fileTyp;
return o;
}
var fileTyp=fileName.split(".")[1];
if(["bmp", "gif", "jpg", "jpeg", "png"].join(",").indexOf(fileTyp) !=-1){
o.type="image";
o.filetype="image/"+fileTyp;
return o;
}
if(["mp3"].join(",").indexOf(fileTyp) !=-1){
o.type="audio";
o.filetype="audio/"+fileTyp;
return o;
}
if(["swf", "flv" , "mp4","wav", "wma", "wmv", "mid", "avi", "mpg",
"rm", "rmvb"].join(",").indexOf(fileTyp) !=-1 ){
o.type="video";
o.filetype="video/"+fileTyp;
return o;
}
return o;
}
var initialPreview = [] ;
var initialPreviewConfig = [] ; 这两个属性才是显示的东西,
generFilDel 这个方法就是弄一下文件的类型否则渲染出来的格式是这样的
分好类型后可以优雅的展示上传过的文件多媒体文件可以和谐的预览
bootstrap inputfile 使用-上传,回显的更多相关文章
- bootstrap fileinput 文件上传工具
这是我上传的第二个plugin 首先第一点就是因为这个好看 符合bootstrap的界面风格 第二是可以拖拽(虽然我不常用这个功能 但是这样界面看起来就丰满了很多) 最后不得不吐槽这个的回发事件 我百 ...
- 【Bootstrap】bootstrap-fileinput上传文件插件
[bootstrap-fileinput] 这是个据传最好用的bootstrap相关联的文件上传控件,支持拖曳上传,多线程上传,上传文件预览等等功能. 首先还是说一下要引入的一些文件: <lin ...
- bootstrap fileinput添加上传成功回调事件
国外牛人做的bootstrap fileinput挺酷的,但是可惜没有提供自定义上传成功回调事件的接口,因此感到非常头疼,但是很幸运的是,我在网上搜索到一个提问帖子,它问到使用Jquery的on函数绑 ...
- SpringBoot+BootStrap多文件上传到本地
1.application.yml文件配置 # 文件大小 MB必须大写 # maxFileSize 是单个文件大小 # maxRequestSize是设置总上传的数据大小 spring: servle ...
- bootstrap fileinput 文件上传
最近因为项目需要研究了下bootstrap fileinput的使用,来记录下这几天的使用心得吧. 前台html页面的代码 <form role="form" id=&quo ...
- Bootstrap Fileupload 文件上传
1.在jsp中引入css与js文件, <link href="${ctx}/plugins/fileup/css/fileinput.css" media="all ...
- 基于BootStrap的Collapse折叠(包含回显展开折叠的对应状态)
情况描述:为了改善页面上的input框太多,采用∧∨折叠展开,这个小东西来控制,第一次做,记录一下ヾ(◍°∇°◍)ノ゙下边是Code 代码: //html代码 <div id="col ...
- bootstrap fileinput+MVC 上传多文件,保存
新增用户资料,需要用户上传多笔附件,所以就尝试用了fileinput控件,显示效果如图: 首先,先在model中定义数据模型: public partial class create { [Requi ...
- bootstrap 好看的上传组件
<!DOCTYPE html> <html> <head> <title></title> <link rel="style ...
随机推荐
- 使用SuperSocket实现自定义协议C/S设计
一.简介: 21世纪是出于互联网+的时代,许多传统行业和硬件挂钩的产业也逐步转向了系统集成智能化,简单来说就是需要软硬件的结合.这时,软硬件通讯便是这里面最主要的技术点,我们需要做到的是让硬件能够听懂 ...
- 【springcloud】Eureka服务注册中心搭建
转自:https://blog.csdn.net/pengjunlee/article/details/86538997 Spring Cloud是一系列框架的集合,它利用Spring Boot的开发 ...
- save tran tranName
begin tran 语句将 @@Trancount加 1.Rollback tran将 @@Trancount递减到 0,但 Rollback tran savepoint_name 除外,它不影响 ...
- 老司机带你体验SYS库多种新玩法
导读 如何更加愉快地利用sys库做一些监控? 快来,跟上老司机,体验sys库的多种新玩法~ MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还 ...
- Python中的私有属性私有方法、类属性类方法以及单例设计模式
私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法.在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线) 公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只 ...
- Python之requests模块-request api
requests所有功能都能通过"requests/api.py"中的方法访问.它们分别是: requests.request(method, url, **kwargs) req ...
- Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重
上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码: 这是对简单数据类型的去重 //字符串集合进行简单 ...
- 聊聊 Jmeter 如何并发执行 Python 脚本
1. 前言 大家好,我是安果! 最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的方案 本篇文章以文件上传为例,聊 ...
- 连接Redis服务
1.命令 redis-cli -h host -p port -a password 2.参数 host:远程redis服务器host port:远程redis服务端口 password:远程redi ...
- 【数据库上】 第四讲 E-R模型基础知识
第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...