亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS文件上傳神器bootstrap fileinput詳解

2019-11-19 19:01:27
字體:
來源:轉載
供稿:網友

Bootstrap FileInput插件功能如此強大,完全沒有理由不去使用,但是國內很少能找到本插件完整的使用方法,于是本人去其官網翻譯了一下英文說明文檔放在這里供英文不好的同學勉強查閱。另外附上一段調用方發和servlet端的接收代碼,未完待續。

引言:

一個強化的HTML5 文件輸入插件,適用于Bootstrap 3.x。本插件對多種類型的文件提供文件預覽,并且提供了多選等功能。本插件還提供給你一個簡單的方式去安裝一個先進的文件選擇/上傳控制版本去配合Bootstrap CSS3樣式。通過對很多種文件提供預覽支持,比如圖片,文本,html,視頻,聲音,flash和對象,它大大增強了文件輸入的功能。另外,它還包含基于AJAX的上傳,拖拽,移除文件的功能,可視化的上傳進度條,和可選擇的添加或刪除文件預覽功能。

提示:本插件致力于使用大量在添加jquery下的css3和html5功能,強調:你可能會發現css3或html5或它兩個的混合在許多實現中被需要。

本插件最早受一篇博文和Jasny'sFile Input plugin啟發。但是本插件現在已經添加的好多功能和強化,為開發者提供了一個成熟并且完整的文件管理工具和解決方案。

伴隨著4.0.0版本的發布,本插件現在支持被多種現代化瀏覽器支持的,基于Ajax,利用html5 Formdata和XHR2協議的上傳。而且她也擁有了對在服務器端基于AJAX的文件刪除原生內置支持。因此它可以添加更加強大的功能,聯機添加、移除文件。本插件也對大多數現代瀏覽器添加了拖拉,移除支持。它也已經為Ajax上傳提供原生支持。萬一,瀏覽器不支持FormData或XHR2,本插件會降級成一個普通表單。

文件上傳插件File Input介紹

一般情況下,我們需要引入下面兩個文件,插件才能正常使用:

bootstrap-fileinput/css/fileinput.min.css
bootstrap-fileinput/js/fileinput.min.js

簡單的界面效果和眾多上傳文件控件一樣,可以接受各種類型的文件。當然,我們也可以指定具體接受的文件類型等功能。

如果需要考慮中文化,那么還需要引入文件:

bootstrap-fileinput/js/fileinput_locale_zh.js

這樣基于MVC的Bundles集合,我們把它們所需要的文件加入到集合里面即可。

//添加對bootstrap-fileinput控件的支持css_metronic.Include("~/Content/MyPlugins/bootstrap-fileinput/css/fileinput.min.css");js_metronic.Include("~/Content/MyPlugins/bootstrap-fileinput/js/fileinput.min.js");js_metronic.Include("~/Content/MyPlugins/bootstrap-fileinput/js/fileinput_locale_zh.js");

這樣我們在頁面里面,就可以呈現出中文的界面說明和提示了

文件上傳插件File Input的使用

一般情況下,我們可以定義一個JS的通用函數,用來初始化這個插件控件的,如下JS的函數代碼所示。

//初始化fileinput控件(第一次初始化)function initFileInput(ctrlName, uploadUrl) {  var control = $('#' + ctrlName);  control.fileinput({ language: 'zh', //設置語言 uploadUrl: uploadUrl, //上傳的地址 allowedFileExtensions : ['jpg', 'png','gif'],//接收的文件后綴 showUpload: false, //是否顯示上傳按鈕 showCaption: false,//是否顯示標題 browseClass: "btn btn-primary", //按鈕樣式  previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",  });}

頁面代碼里面,我們放置一個文件上傳控件,如下代碼所示。

<div class="row" style="height: 500px"><input id="file-Portrait1" type="file"></div>

這樣我們腳本代碼的初始化代碼如下:

//初始化fileinput控件(第一次初始化)initFileInput("file-Portrait", "/User/EditPortrait");

這樣就完成了控件的初始化了,如果我們需要上傳文件,那么還需要JS的代碼處理客戶端上傳的事件,同時也需要MVC后臺控制器處理文件的保存操作。

例如我對窗體數據的保存處理代碼如下所示。

//添加記錄的窗體處理 formValidate("ffAdd", function (form) { $("#add").modal("hide"); //構造參數發送給后臺 var postData = $("#ffAdd").serializeArray(); $.post(url, postData, function (json) { var data = $.parseJSON(json); if (data.Success) { //增加肖像的上傳處理 initPortrait(data.Data1);//使用寫入的ID進行更新 $('#file-Portrait').fileinput('upload'); //保存成功 1.關閉彈出層,2.刷新表格數據 showTips("保存成功"); Refresh(); } else { showError("保存失敗:" + data.ErrorMessage, 3000); } }).error(function () { showTips("您未被授權使用該功能,請聯系管理員進行處理。"); }); });

其中我們注意到文件保存的處理邏輯代碼部分:

//增加肖像的上傳處理initPortrait(data.Data1);//使用寫入的ID進行更新$('#file-Portrait').fileinput('upload');

第一行代碼就是重新構建上傳的附加內容,如用戶的ID信息等,這樣我們就可以根據這些ID來構建一些額外的數據給后臺上傳處理了。

這個函數主要就是重新給ID賦值,方便上傳的時候,獲取最新的附加參數,這個和Uploadify的處理模式一樣的。

//初始化圖像信息 function initPortrait(ctrlName, id) { var control = $('#' + ctrlName); var imageurl = '/PictureAlbum/GetPortrait?id=' + id + '&r=' + Math.random(); //重要,需要更新控件的附加參數內容,以及圖片初始化顯示 control.fileinput('refresh', { uploadExtraData: { id: id }, initialPreview: [ //預覽圖片的設置 "<img src='" + imageurl + "' class='file-preview-image' alt='肖像圖片' title='肖像圖片'>", ], }); }

前面我們看到,我上傳的地址為:"/User/EditPortrait",這個后臺的函數我也公布一下,希望給大家一個完整的案例代碼學習。

/// <summary> /// 上傳用戶頭像圖片 /// </summary> /// <param name="id">用戶的ID</param> /// <returns></returns> public ActionResult EditPortrait(int id) { CommonResult result = new CommonResult(); try { var files = Request.Files; if (files != null && files.Count > 0) { UserInfo info = BLLFactory<User>.Instance.FindByID(id); if (info != null) { var fileData = ReadFileBytes(files[0]); result.Success = BLLFactory<User>.Instance.UpdatePersonImageBytes(UserImageType.個人肖像, id, fileData); } } } catch (Exception ex) { result.ErrorMessage = ex.Message; } return ToJsonContent(result); }

這樣我們就構建了上面的用戶肖像的保存處理邏輯了,文件可以正常的保存到后臺的文件系統里面,同時數據庫里面記錄一些必備的信息。

當然,除了用來處理用戶的肖像圖片,我們也可以用來構建圖片相冊的處理操作的。

//初始化fileinput控件(第一次初始化) $('#file-Portrait').fileinput({ language: 'zh', //設置語言 uploadUrl: "/FileUpload/Upload", //上傳的地址 allowedFileExtensions : ['jpg', 'png','gif'],//接收的文件后綴, maxFileCount: 100, enctype: 'multipart/form-data', showUpload: true, //是否顯示上傳按鈕 showCaption: false,//是否顯示標題 browseClass: "btn btn-primary", //按鈕樣式  previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",  msgFilesTooMany: "選擇上傳的文件數量({n}) 超過允許的最大數值{m}!", });

源碼下載:Bootstrap FileInput文件上傳組件

本文已被整理到了《javascript文件上傳操作匯總》,《ajax上傳技術匯總》歡迎大家學習閱讀。

如果大家還想深入學習,可以點擊這里進行學習,再為大家附兩個精彩的專題:Bootstrap學習教程 Bootstrap實戰教程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品色欧美aⅴ一区二区| 精品无人区太爽高潮在线播放| 欧美在线观看www| 久久久久久久国产| 96精品久久久久中文字幕| 亚洲国产婷婷香蕉久久久久久| 成人国产亚洲精品a区天堂华泰| 亚洲综合中文字幕在线观看| 久久久久久久999精品视频| 中文字幕国产日韩| 大荫蒂欧美视频另类xxxx| 国产亚洲精品高潮| 久久久久久久国产精品| 久久免费精品日本久久中文字幕| 97在线免费视频| 91夜夜未满十八勿入爽爽影院| 亚洲电影免费观看高清完整版在线观看| 91免费看片在线| 国产自产女人91一区在线观看| 国产精品99久久久久久久久久久久| 亚洲成av人影院在线观看| 国产国语刺激对白av不卡| 日韩中文字幕视频在线观看| 中文字幕久久亚洲| 亚洲女人初尝黑人巨大| 亚洲一区二区福利| 亚洲精品视频久久| 日韩精品在线看| 草民午夜欧美限制a级福利片| 欧美精品久久久久久久久| 久久成人亚洲精品| 亚洲视频一区二区| 亚洲片在线资源| 欧美日韩不卡合集视频| 亚洲免费视频网站| 久久激情视频久久| 欧美色另类天堂2015| 亚洲午夜精品久久久久久久久久久久| 亚洲欧洲在线免费| 国产精品美女免费视频| 国产精品一区久久久| 亚洲精品wwwww| 日韩久久精品成人| 韩剧1988在线观看免费完整版| 91亚洲精品久久久| 亚洲免费高清视频| 亚洲精品福利资源站| 亚洲欧美综合图区| 九九精品视频在线观看| 神马久久久久久| 亚洲福利精品在线| 国产精品视频永久免费播放| 国产狼人综合免费视频| 久久精品国产一区二区三区| 亚洲一区二区三区xxx视频| 久久躁狠狠躁夜夜爽| 欧美国产日韩一区二区| 亚洲黄色在线观看| 欧美俄罗斯性视频| 国产精品福利在线观看| 久久天天躁狠狠躁老女人| 午夜免费日韩视频| 9.1国产丝袜在线观看| 欧美日韩中文字幕在线| 国产精品久久久久久久久免费| 17婷婷久久www| 国产自产女人91一区在线观看| 激情懂色av一区av二区av| 国产精品天天狠天天看| 国产精品∨欧美精品v日韩精品| 亚洲自拍偷拍福利| 国产精品99蜜臀久久不卡二区| 国产精品久久久久av免费| 色伦专区97中文字幕| 亚洲视频999| 日韩精品在线影院| 中文字幕国产亚洲| 国产精品视频男人的天堂| 亚洲精美色品网站| 久久亚洲精品国产亚洲老地址| 中文字幕一区二区精品| 午夜精品久久久久久久白皮肤| 欧美日产国产成人免费图片| 伊人一区二区三区久久精品| 欧美激情第6页| 亚洲2020天天堂在线观看| 日韩在线观看你懂的| 97成人精品视频在线观看| 色综合色综合久久综合频道88| 国产精品久久久久秋霞鲁丝| 亚洲精品不卡在线| 国产成人精品免费久久久久| xxxxxxxxx欧美| 日韩欧美国产激情| 亚洲第一精品福利| 国产精品自拍网| 国产精品91一区| 91久久久久久久久久久久久| 91精品视频在线播放| 欧美大片在线看| 欧美日韩美女在线| 亚洲另类欧美自拍| 黄网动漫久久久| 精品久久久999| 中文国产成人精品久久一| 91精品在线一区| 日韩精品中文字幕在线观看| 国产精品成熟老女人| 日韩av电影国产| 亚洲性xxxx| 伊人伊成久久人综合网小说| 欧美激情一级欧美精品| 亚洲第一综合天堂另类专| 欧美一区三区三区高中清蜜桃| 亚洲精品aⅴ中文字幕乱码| 欧美激情精品久久久久久变态| 亚洲国产精品女人久久久| 91国内产香蕉| 国产香蕉一区二区三区在线视频| 伊人伊成久久人综合网小说| 性色av香蕉一区二区| 91九色视频导航| 国产精品久久久久久一区二区| 国产精品久久久久久久app| 欧美人与性动交a欧美精品| 久久成年人视频| 欧美一区二区三区精品电影| 国精产品一区一区三区有限在线| 日韩精品中文字幕在线| 欧美一级视频免费在线观看| 欧美韩日一区二区| 国产欧美一区二区三区在线| 欧美成人黄色小视频| 色婷婷亚洲mv天堂mv在影片| 国产精品久久久久久久av大片| 日本aⅴ大伊香蕉精品视频| 久久在线视频在线| 久久噜噜噜精品国产亚洲综合| 欧美国产日韩一区二区在线观看| 日韩精品在线免费| 久久精品国产清自在天天线| 97超级碰碰碰久久久| 日本精品一区二区三区在线播放视频| 久久久久久久久中文字幕| 日韩av毛片网| 欧美激情亚洲国产| 久久激情视频久久| 欧美性猛交xxxx偷拍洗澡| 成人国产精品久久久| 精品国产91久久久| 亚洲精品一区久久久久久| 亚洲第五色综合网| 欧美午夜精品在线| 亚洲天堂av图片| 久久精品99久久久香蕉| 日韩av在线免播放器| 欧美日韩免费区域视频在线观看| 亚洲成av人乱码色午夜| 欧美激情精品在线| 日韩欧美国产激情| wwwwwwww亚洲| 伊人久久久久久久久久久久久| 久久久国产在线视频| 高清一区二区三区四区五区|