国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

bootstrap fileinput 上傳插件的基礎(chǔ)使用

2019-11-19 17:32:09
字體:
供稿:網(wǎng)友

前言:

之前的三篇介紹了下bootstrap table的一些常見用法,發(fā)現(xiàn)博主對(duì)這種扁平化的風(fēng)格有點(diǎn)著迷了。前兩天做一個(gè)excel導(dǎo)入的功能,前端使用原始的input type='file'這種標(biāo)簽,效果不忍直視,于是博主下定決心要找一個(gè)好看的上傳組件換掉它。既然bootstrap開源,那么社區(qū)肯定有很多關(guān)于它的組件,肯定也有這種常見的上傳組件吧。經(jīng)過一番查找,功夫不負(fù)有心人,還是被博主找到了這個(gè)組件:bootstrap fileinput。關(guān)于這個(gè)組件的簡單應(yīng)用,基于BootStrap Metronic開發(fā)框架經(jīng)驗(yàn)小結(jié)【五】Bootstrap File Input文件上傳插件的用法詳解,只不過很多細(xì)節(jié)都沒有涉及,于是博主在完成開發(fā)任務(wù)之余,總結(jié)了下這個(gè)組件的一些常見用法。在此記錄下,就算做個(gè)筆記吧,也給需要使用的朋友提供點(diǎn)方便。

源碼以及API地址:

bootstrap-fileinput源碼:https://github.com/kartik-v/bootstrap-fileinput

bootstrap-fileinput在線API:http://plugins.krajee.com/file-input

bootstrap-fileinput Demo展示:http://plugins.krajee.com/file-basic-usage-demo

一、效果展示

 1、原始的input type='file',簡直不忍直視。

2、不做任何裝飾的bootstrap fileinput:(bootstrap fileinput初級(jí)進(jìn)化)

3、bootstrap fileinput高級(jí)進(jìn)化:中文化、可拖拽上傳、文件擴(kuò)展名校驗(yàn)(如果不是需要的文件,不讓上傳)

拖拽上傳

上傳中

4、bootstrap fileinput究極進(jìn)化:允許同時(shí)多線程上傳多個(gè)文件。

上傳中

上傳完成后

二、代碼示例

 怎么樣?效果如何?不要急,我們一步一步來實(shí)現(xiàn)以上的效果。

1、cshtml頁面

首先引入需要的js和css文件。

//bootstrap fileinput  bundles.Add(new ScriptBundle("~/Content/bootstrap-fileinput/js").Include(     "~/Content/bootstrap-fileinput/js/fileinput.min.js",     "~/Content/bootstrap-fileinput/js/fileinput_locale_zh.js"));  bundles.Add(new StyleBundle("~/Content/bootstrap-fileinput/css").Include(     "~/Content/bootstrap-fileinput/css/fileinput.min.css")); @Scripts.Render("~/Content/bootstrap-fileinput/js") @Styles.Render("~/Content/bootstrap-fileinput/css") 

然后定義input type='file'標(biāo)簽

<form>  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">   <div class="modal-dialog modal-lg" role="document">    <div class="modal-content">     <div class="modal-header">      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>      <h4 class="modal-title" id="myModalLabel">請(qǐng)選擇Excel文件</h4>     </div>     <div class="modal-body">      <a href="~/Data/ExcelTemplate/Order.xlsx" rel="external nofollow" class="form-control" style="border:none;">下載導(dǎo)入模板</a>      <input type="file" name="txt_file" id="txt_file" multiple class="file-loading" />     </div></div>   </div>  </div> </form>

重點(diǎn)看這一句:

<input type="file" name="txt_file" id="txt_file" multiple class="file-loading" /> 

multiple表示允許同時(shí)上傳多個(gè)文件,class=“file-loading”表示標(biāo)簽的樣式。這里很重要,如果class="file",則中文化不能生效。

2、js初始化

$(function () {  //0.初始化fileinput  var oFileInput = new FileInput();  oFileInput.Init("txt_file", "/api/OrderApi/ImportOrder"); });<span class="cnblogs_code_copy"></span> <span class="cnblogs_code_copy"></span> //初始化fileinput var FileInput = function () {  var oFile = new Object();  //初始化fileinput控件(第一次初始化)  oFile.Init = function(ctrlName, uploadUrl) {  var control = $('#' + ctrlName);  //初始化上傳控件的樣式  control.fileinput({   language: 'zh', //設(shè)置語言   uploadUrl: uploadUrl, //上傳的地址   allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后綴   showUpload: true, //是否顯示上傳按鈕   showCaption: false,//是否顯示標(biāo)題   browseClass: "btn btn-primary", //按鈕樣式    //dropZoneEnabled: false,//是否顯示拖拽區(qū)域   //minImageWidth: 50, //圖片的最小寬度   //minImageHeight: 50,//圖片的最小高度   //maxImageWidth: 1000,//圖片的最大寬度   //maxImageHeight: 1000,//圖片的最大高度   //maxFileSize: 0,//單位為kb,如果為0表示不限制文件大小   //minFileCount: 0,   maxFileCount: 10, //表示允許同時(shí)上傳的最大文件個(gè)數(shù)   enctype: 'multipart/form-data',   validateInitialCount:true,   previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",   msgFilesTooMany: "選擇上傳的文件數(shù)量({n}) 超過允許的最大數(shù)值{m}!",  });  //導(dǎo)入文件上傳完成之后的事件  $("#txt_file").on("fileuploaded", function (event, data, previewId, index) {   $("#myModal").modal("hide");   var data = data.response.lstOrderImport;   if (data == undefined) {    toastr.error('文件格式類型不正確');    return;   }   //1.初始化表格   var oTable = new TableInit();   oTable.Init(data);   $("#div_startimport").show();  }); }  return oFile; }; 

說明:

(1)fileinput()方法里面?zhèn)魅氲氖且粋€(gè)json數(shù)據(jù),它里面有很多屬性,每個(gè)屬性代表著初始化上傳控件的時(shí)候的特性,如果這些屬性都不設(shè)置,則表示使用默認(rèn)的設(shè)置。如果園友們想看看它里面有哪些屬性,可以打開fileinput.js的源碼,在它的最后如圖:

這些屬性如果不特意設(shè)置,就會(huì)使用默認(rèn)值。

(2)$("#txt_file").on("fileuploaded", function (event, data, previewId, index) {}這個(gè)方法注冊(cè)上傳完成后的回調(diào)事件。也就是后天處理上傳的文件之后進(jìn)入這個(gè)方法里面處理。

3、后臺(tái)C#對(duì)應(yīng)的方法

 還記得在js里面初始化控件方法fileinput()里面有一個(gè)參數(shù)url嗎,這個(gè)url對(duì)應(yīng)的值就指示C#后天對(duì)應(yīng)的處理方法。還是貼出后臺(tái)的處理方法。

[ActionName("ImportOrder")]  public object ImportOrder()  {   var oFile = HttpContext.Current.Request.Files["txt_file"];   var lstOrderImport = new List<DTO_TO_ORDER_IMPORT>();   #region 0.數(shù)據(jù)準(zhǔn)備   var lstExistOrder = orderManager.Find();   var lstOrderNo = lstExistOrder.Select(x => x.ORDER_NO).ToList();   var lstTmModel = modelManager.Find();   var lstTmMaterial = materialManager.Find();   //var iMax_Import_Index = lstExistOrder.Max(x => x.IMPORT_INDEX);   //iMax_Import_Index = iMax_Import_Index == null ? 0 : iMax_Import_Index.Value;   #endregion   #region 1.通過Stream得到Workbook對(duì)象   IWorkbook workbook = null;   if (oFile.FileName.EndsWith(".xls"))   {    workbook = new HSSFWorkbook(oFile.InputStream);   }   else if(oFile.FileName.EndsWith(".xlsx"))   {    workbook = new XSSFWorkbook(oFile.InputStream);   }   if (workbook == null)   {    return new { };   }   //...............處理excel的邏輯   //orderManager.Add(lstOrder);   lstOrderImport = lstOrderImport.OrderBy(x => x.IMPORT_STATU).ToList();   return new { lstOrderImport = lstOrderImport };  } 

由于博主的項(xiàng)目是上傳excel,所以這里用是用的NPOI的邏輯,如果是上傳圖片等文件,可以使用GDI去處理圖片。

4、同時(shí)上傳多個(gè)文件

同時(shí)上傳多個(gè)文件的時(shí)候,前臺(tái)會(huì)發(fā)送多個(gè)異步的請(qǐng)求到后臺(tái),也就是說,當(dāng)同時(shí)上傳三個(gè)文件的時(shí)候,后臺(tái)的ImportOrder方法會(huì)進(jìn)入三次。這樣就能使用多線程同時(shí)去處理三個(gè)文件。

三、總結(jié)

關(guān)于bootstrap fileinput的基礎(chǔ)使用大概就介紹完了,其實(shí)就是一個(gè)上傳的組件,也不存在什么高級(jí)用法。重點(diǎn)是把界面做得更加友好,更好的增加用戶體驗(yàn)。如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 周至县| 海门市| 布拖县| 大荔县| 云龙县| 诸暨市| 云阳县| 云安县| 宕昌县| 凤阳县| 太湖县| 博白县| 安阳市| 吉木萨尔县| 绥棱县| 灌云县| 浦江县| 麻栗坡县| 永胜县| 茂名市| 千阳县| 湾仔区| 天台县| 英山县| 茂名市| 宁波市| 雅江县| 安化县| 尚义县| 金溪县| 乌海市| 五常市| 郎溪县| 桂林市| 察哈| 麟游县| 宁德市| 广昌县| 尚义县| 犍为县| 乳源|