Bootstrap之fileinput文件上传控件

      前言~ 前段时间做项目用到了bootstrap里中的文件上传控件,对此特定写这篇文章,讲述一下bootstrap的文件上传空间的使用方法。


我们进入正题吧!

       首先bootstrap是基于jquery的,因此要导入jquery响应jar包,可以找到以下网站:jquery相关js下载

进入网址后,可以选择我圈起来的地址,打开浏览器输入,并将该js的所有内容复制下来,创建一个" .js "文件存储这些内容作为jquery.js使用。

       其次要下载bootstrap的文件包,相必你们已经有了,那么我就只推出下载fileinput的相关文件包即可,以下是下载地址下载fileinput相关文件包

       再次分别导入bootstrap和fileinput的相关css文件,js文件,如下所示:

<link rel="stylesheet" href="../static/css/bootstrap.css">

<link rel="stylesheet" href="../static/css/fileinput.min.css">

<link rel="stylesheet" href="../static/css/themes/theme.css">

<script type="text/javascript" src="../static/js/jquery-3.3.1.min.js"></script>

<script type="text/javascript" src="../static/js/fileinput.min.js"></script>

<script type="text/javascript" src="../static/js/locales/zh.js"></script>

<script type="text/javascript" src="../static/js/themes/theme.js"></script>

       后面可以选择两种方式配置fileinput的相关属性,一种是在jsp或者html中直接配置,第二种是写一个js,然后将该js引入。本人推荐使用第二种,因为比较灵活。下面我都列出两种方式。

第一种:

<div class="container kv-main">

<div class="row ">

<div style="margin:100px 240px;width:700px;height:300px ">

<form nctype="multipart/form-data">

<input id="file-0a" class="file" name="file" type="file" multiple data-min-file-count="1">

<br>

</form>

</div>

</div>


<script>

$('#file-0a').fileinput({

'theme':'explorer',

language:'zh',

uploadUrl:'<%=path%>/uploadMultipleFile.do',

showPreview:true,//是否显示预览

    allowedPreviewTypes : ['image','html','text','video','audio','flash'],

maxFileCount :3,// 表示允许同时上传的最大文件个数

});

$('#file-0a').on('fileuploaderror',function(event, data, previewId, index) {

var form = data.form,files = data.files,extra = data.extra,

response = data.response,reader = data.reader;

console.log(data);

console.log('File upload error');

});

$('#file-0a').on('fileerror',function(event, data) {

console.log(data.id);

console.log(data.index);

console.log(data.file);

console.log(data.reader);

console.log(data.files);

});

$('#file-0a').on('fileuploaded',function(event, data, previewId, index) {

var form = data.form,files = data.files,extra = data.extra,

response = data.response,reader = data.reader;

console.log('File uploaded triggered');

});

</script>

第二种:

$(function () {

    //0.初始化fileinputvaroFileInput =new FileInput();

    oFileInput.Init("file-0a", "/api/OrderApi/ImportOrder");

});

//初始化fileinputvarFileInput =function () {

    varoFile =new Object();

    //初始化fileinput控件(第一次初始化)oFile.Init =function(ctrlName, uploadUrl) {

    varcontrol = $('#' + ctrlName);

    //初始化上传控件的样式    control.fileinput({

        language: 'zh',//设置语言

        uploadUrl: uploadUrl,//上传的地址

        allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后缀

        showUpload: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,

        previewFileIcon: "",

        msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",    });

    //导入文件上传完成之后的事件

$('#file-0a').on('fileuploaderror',function(event, data, previewId, index) {

var form = data.form,files = data.files,extra = data.extra,

response = data.response,reader = data.reader;

console.log(data);

console.log('File upload error');

});

$('#file-0a').on('fileerror',function(event, data) {

console.log(data.id);

console.log(data.index);

console.log(data.file);

console.log(data.reader);

console.log(data.files);

});

$('#file-0a').on('fileuploaded',function(event, data, previewId, index) {

var form = data.form,files = data.files,extra = data.extra,

response = data.response,reader = data.reader;

console.log('File uploaded triggered');

});

}

    return oFile;

};

以下将提供fileinput的相关api

属性名       属性类型     描述     说明      默认值

language     String    多语言设置,使用时需提前引入\locales文件夹下对应的语言文件,

中文zh,引入语言文件必须放在fileinput.js之后                    'en'

showCaption     Boolean     是否显示被选文件的简介          true

showBrowse      Boolean     是否显示浏览按钮                    true

showPreview      Boolean    是否显示预览区域                    true

showRemove      Boolean    是否显示移除按钮                   true,

showUpload        Boolean    是否显示上传按钮                   true,

showCancel        Boolean    是否显示取消按钮                   true,

showClose:         Boolean    是否显示关闭按钮                   true

showUploadedThumbs       Boolean                                    true

browseOnZoneClick            Boolean                                   false

autoReplace                        Boolean        是否自动替换当前图片,设置为true时,再次选择文件,

会将当前的文件替换掉。                                                    false

generateFileId                     Object                                      null

previewClass                      String    添加预览按钮的类属性          ‘’

captionClass                       String                                                  ‘’

frameClass                         String                                       'krajee-default'

mainClass                           String                                      'file-caption-main'

mainTemplate                     Object                                         null

purifyHtml                           Boolean                                      true

fileSizeGetter                      Object                                         null

initialCaption                       String                                             ''

initialPreview                   Array/Object                                     []

initialPreviewDelimiter         String                                         '*$$*'

initialPreviewAsData           Boolean                                      false

initialPreviewFileType            String                                      'image'

initialPreviewConfig          Array/Object                                     []

initialPreviewThumbTags    Array/Object                                   []

previewThumbTags               Object                                          {}

initialPreviewShowDelete       Boolean                                    true

removeFromPreviewOnError  Boolean                                   false

deleteUrl            String           删除图片时的请求路径                ''

deleteExtraData   Object       删除图片时额外传入的参数         {}

overwriteInitial      Boolean                                                        true

previewZoomButtonIcons           Object

 {

   prev: '',

  next: '',

  toggleheader: '',

  fullscreen: '',

  borderless: '',

  close: ''

},

previewZoomButtonClasses       Object

  { 

prev: 'btn btn-navigate',

  next: 'btn btn-navigate',

  toggleheader: 'btn btn-default btn-header-toggle',

  fullscreen: 'btn btn-default',

  borderless: 'btn btn-default',

  close: 'btn btn-default'

},

preferIconicPreview               Boolrean                                 false

preferIconicZoomPreview       Boolrean                                false

allowedPreviewTypes             undefined                               undefined

allowedPreviewMimeTypes     Object                                     null

allowedFileTypes                     Object            接收的文件后缀,如['jpg', 'gif', 'png'],不填将不限制上传文件后缀类型                                                                       null

allowedFileExtensions             Object                                     null

defaultPreviewContent            Object                                     null

customLayoutTags                  Object                                       {}

customPreviewTags               Object                                        {}

previewFileIcon                      String                                         ''

previewFileIconClass             String                               'file-other-icon'

previewFileIconSettings         Object                                      {}

previewFileExtSettings           Object                                      {}

buttonLabelClass                    String                                'hidden-xs'

browseIcon                             String                                        ' '

browseClass                          String                             'btn btn-primary'

removeIcon                             String                                          ''

removeClass                           String                             'btn btn-default'

cancelIcon                               String                                        ''

cancelClass                             String                             'btn btn-default'

uploadIcon                              String                                        ''

uploadClass                            String                             'btn btn-default'

uploadUrl                               String       上传文件路径          null

uploadAsync                          boolean    是否为异步上传      true

uploadExtraData                                     上传文件时额外传递的参数设置          {}

zoomModalHeight                number                                     480

minImageWidth                    String          图片的最小宽度     null

minImageHeight                  String           图片的最小高度      null

maxImageWidth                  String           图片的最大宽度      null

maxImageHeight                String            图片的最大高度      null

resizeImage                        boolean                                      false

resizePreference                String                                         'width'

resizeQuality                      number                                        0.92

resizeDefaultImageType      String                                  'image/jpeg'

minFileSize                          number    单位为kb,上传文件的最小大小值     0

maxFileSize                         number    单位为kb,如果为0表示不限制文件大小    0

resizeDefaultImageType      number                                25600(25MB)

minFileCount                       number     表示同时最小上传的文件个数                    0

maxFileCount                      number    表示允许同时上传的最大文件个数              0

validateInitialCount              boolean                                                                    false

msgValidationErrorClass     String                                                                 'text-danger'

msgValidationErrorIcon       String                                                                         ' '

msgErrorClass                     String                                                      'file-error-message'

progressThumbClass          String                                                   "progress-bar progress-bar-success progress-bar-striped active"

rogressClass                        String                                                   "progress-bar progress-bar-success progress-bar-striped active"

progressCompleteClass       String                            "progress-bar progress-bar-success"

progressErrorClass              String                             "progress-bar progress-bar-danger"

progressUploadThreshold    number                                                       99

previewFileType                    String                      预览文件类型,内置['image', 'html', 'text', 'video', 'audio', 'flash', 'object',‘other‘]等格式                                       'image'

elCaptionContainer               String                                                            null

elCaptionText                        String             设置标题栏提示信息              null

elPreviewContainer              String                                                             null

elPreviewImage                   String                                                             null

elPreviewStatus                   String                                                             null

elErrorContainer                  String                                                             null

errorCloseButton                 String                                                              '×'

slugCallback                        String             暂时没有搜到说明,调试显示,在文件选择后会调到这个方法。                                                                                      null

dropZoneEnabled                boolean       是否显示拖拽区域                     true

dropZoneTitleClass              String          拖拽区域类属性设置         'file-drop-zone-title'

fileActionSettings                 Object                                                              {}

otherActionButtons              String                                                                ''

textEncoding                       String                  编码设置                             'UTF-8'

ajaxSettings                        Object                                                                {}

ajaxDeleteSettings              Object                                                                {}

showAjaxErrorDetails         boolean                                                             true

7、Method说明:

方法名参数描述

fileerror 异步上传错误结果处理

$('#uploadfile').on('fileerror', function(event, data, msg) {

});

fileuploaded 异步上传成功结果处理

$("#uploadfile").on("fileuploaded", function (event, data, previewId, index) {

})

filebatchuploaderror 同步上传错误结果处理

$('#uploadfile').on('filebatchuploaderror', function(event, data, msg) {

});

filebatchuploadsuccess 同步上传成功结果处理

$('#uploadfile').on('filepreupload', function(event, data, previewId, index) {    

});

filebatchselected 选择文件后处理事件

$("#fileinput").on("filebatchselected", function(event, files) {

});

upload 文件上传方法

$("#fileinput").fileinput("upload");

fileuploaded 上传成功后处理方法

$("#fileinput").on("fileuploaded", function(event, data, previewId, index) {

});

filereset  

fileclear 点击浏览框右上角X 清空文件前响应事件

$("#fileinput").on("fileclear",function(event, data, msg){

});

filecleared 点击浏览框右上角X 清空文件后响应事件

$("#fileinput").on("filecleared",function(event, data, msg){

});

fileimageuploaded 在预览框中图片已经完全加载完毕后回调的事件


   后台代码

/**

* 多文件上传

* @param files 文件数组

* @param request

* @return

* @throws IOException

*/

@RequestMapping(value ="/uploadMultipleFile.do", method = RequestMethod.POST, produces ="application/json;charset=utf8")

@ResponseBody

public Message uploadMultipleFileHandler(@RequestParam("file") MultipartFile[] files, HttpServletRequest request)throws IOException {

Message msg =new Message();

ArrayList arr =new ArrayList();

String serverPath=null;

for (int i =0; i < files.length; i++) {

MultipartFile file = files[i];

if (!file.isEmpty()) {

InputStream in =null;

OutputStream out =null;

try {

if(file.getOriginalFilename().substring(0,file.getOriginalFilename().indexOf(".")).contains("表1-恶意程序监测统计")){

serverPath=FileUtil.getMalwareUploadDirFilePath(file.getOriginalFilename(), request);

}else{

serverPath=FileUtil.getHighRiskUploadDirFilePath(file.getOriginalFilename(), request);

}

/*String serverPath=dir.getAbsolutePath() + File.separator + file.getOriginalFilename();*/

                File serverFile =new File(serverPath);

in = file.getInputStream();

out =new FileOutputStream(serverFile);

byte[] b =new byte[1024];

int len =0;

while ((len = in.read(b)) >0) {

out.write(b,0, len);

}

out.close();

in.close();

logger.info("Server File Location=" + serverFile.getAbsolutePath());

}catch (Exception e) {

arr.add(i);

}finally {

if (out !=null) {

out.close();

out =null;

}

if (in !=null) {

in.close();

in =null;

}

}

}else {

arr.add(i);

}

}

if(arr.size() >0) {

msg.setStatus(Status.ERROR);

msg.setError("Files upload fail");

msg.setErrorKys(arr);

}else {

msg.setStatus(Status.SUCCESS);

msg.setStatusMsg("Files upload success");

}

return msg;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342