J'ai récemment eu du temps libre et j'ai résumé quelques utilisations courantes du composant bootstrap fileinput. J'aimerais les partager sur la plateforme Script Home pour votre référence et pour faciliter les recherches futures. Veuillez me pardonner si cet article n'est pas bien écrit.
1. Affichage des effets
1. L'entrée type='file' d'origine est tout simplement insupportable à regarder.
2. Entrée de fichier bootstrap sans aucune décoration : (évolution principale de l'entrée de fichier bootstrap)
3. Evolution avancée de l'entrée de fichier bootstrap : culture chinoise, téléchargement par glisser-déposer, vérification de l'extension de fichier (s'il ne s'agit pas d'un fichier requis, il ne sera pas téléchargé)
Faites glisser et déposez pour télécharger
Téléchargement
4. L'évolution ultime du bootstrap fileinput : permet de télécharger plusieurs fichiers par plusieurs threads en même temps.
Téléchargement
Une fois le téléchargement terminé
2. Exemples de codes
Et si ? Quelle est son efficacité ? Ne vous inquiétez pas, nous obtiendrons les effets ci-dessus étape par étape.
1.page cshtml
Introduisez d’abord les fichiers js et css requis.
//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")
Puis définissez la balise input type='file'
<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">请选择Excel文件</h4> </div> <div class="modal-body"> <a href="~/Data/ExcelTemplate/Order.xlsx" class="form-control" style="border:none;">下载导入模板</a> <input type="file" name="txt_file" id="txt_file" multiple class="file-loading" /> </div></div> </div> </div> </form>
Focus sur cette phrase :
<input type="file" name="txt_file" id="txt_file" multiple class="file-loading" />
multiple indique que plusieurs fichiers peuvent être téléchargés en même temps, et class="file-loading" indique le style de la balise.
2.initialisation js
$(function () { //0.初始化fileinput var oFileInput = new FileInput(); oFileInput.Init("txt_file", "/api/OrderApi/ImportOrder"); }); //初始化fileinput var FileInput = function () { var oFile = new Object(); //初始化fileinput控件(第一次初始化) oFile.Init = function(ctrlName, uploadUrl) { var control = $('#' + 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: "<i class='glyphicon glyphicon-king'></i>", msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!", }); //导入文件上传完成之后的事件 $("#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; };
Description :
(1) La méthode fileinput() est transmise dans une donnée json, qui contient de nombreux attributs. Chaque attribut représente les caractéristiques lors de l'initialisation du contrôle de téléchargement. Si ces attributs ne sont pas définis, cela signifie utiliser la configuration par défaut. Si les amis du jardin veulent voir quels attributs il contient, vous pouvez ouvrir le code source de fileinput.js, comme indiqué à la fin :
Si ces propriétés ne sont pas définies spécifiquement, les valeurs par défaut seront utilisées.
(2) $("#txt_file").on("fileuploaded", function (event, data, previewId, index) {}Cette méthode enregistre l'événement de rappel une fois le téléchargement terminé. C'est-à-dire après le téléchargement le fichier est traité après-demain Entrez cette méthode pour le gérer
.3. Méthode correspondante du backend C#
Vous souvenez-vous encore qu'il existe une url de paramètre dans la méthode de contrôle d'initialisation fileinput() en js ? La valeur correspondant à cette url indique la méthode de traitement correspondante en C#. Ou publiez la méthode de traitement en arrière-plan.
[ActionName("ImportOrder")] public object ImportOrder() { var oFile = HttpContext.Current.Request.Files["txt_file"]; var lstOrderImport = new List<DTO_TO_ORDER_IMPORT>(); #region 0.数据准备 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对象 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 }; }
Puisque le projet du blogueur est de télécharger Excel, la logique de NPOI est utilisée ici. Si vous téléchargez des fichiers tels que des images, vous pouvez utiliser GDI pour traiter les images.
4. Téléchargez plusieurs fichiers en même temps
Lorsque plusieurs fichiers sont téléchargés en même temps, le frontend enverra plusieurs requêtes asynchrones en arrière-plan, c'est-à-dire que lorsque trois fichiers sont téléchargés en même temps, la méthode ImportOrder en arrière-plan sera saisie trois fois. . Cela vous permet d'utiliser le multithreading pour traiter trois fichiers en même temps.
3.Résumé
Cela a probablement fini d'introduire l'utilisation de base de bootstrap fileinput. En fait, il ne s'agit que d'un composant de téléchargement, et il n'y a pas d'utilisations avancées. L’objectif est de rendre l’interface plus conviviale et d’améliorer l’expérience utilisateur.
Il s'agit de l'utilisation détaillée du composant de téléchargement de fichiers Bootstrap Fileinput. J'espère qu'il vous sera utile !