Maison > interface Web > js tutoriel > Explication détaillée de l'utilisation des compétences de téléchargement de fichiers Bootstrap Fileinput Component_Javascript

Explication détaillée de l'utilisation des compétences de téléchargement de fichiers Bootstrap Fileinput Component_Javascript

WBOY
Libérer: 2016-05-16 09:00:09
original
3564 Les gens l'ont consulté

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")
Copier après la connexion

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>
Copier après la connexion

Focus sur cette phrase :

<input type="file" name="txt_file" id="txt_file" multiple class="file-loading" />
Copier après la connexion

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;
};
Copier après la connexion

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 &#63; 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 };
}
Copier après la connexion

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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal