최근 시간이 있어서 부트스트랩 파일 입력 구성 요소의 몇 가지 일반적인 용도를 요약했습니다. 이를 참고하고 향후 검색을 용이하게 하기 위해 스크립트 홈 플랫폼에서 공유하고 싶습니다. 이 글이 잘 못 쓰여졌다면 양해해 주시기 바랍니다.
1. 효과 표시
1. 원래 입력 유형='파일'은 보기에 참을 수 없습니다.
2. 장식 없는 파일 입력: (부트스트랩 파일 입력의 일차적 진화)
3. 부트스트랩 파일 입력의 진화: 중국 문화, 드래그 앤 드롭 업로드, 파일 확장자 확인(필수 파일이 아닐 경우 업로드되지 않음)
드래그 앤 드롭으로 업로드
업로드 중
4. 부트스트랩 파일 입력의 궁극적인 발전: 여러 스레드에서 동시에 여러 파일을 업로드할 수 있습니다.
업로드 중
업로드 완료 후
2. 코드 예시
어때요? 얼마나 효과적인가요? 걱정하지 마십시오. 위의 효과를 단계별로 달성해 보겠습니다.
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")
그런 다음 입력 유형='파일' 태그를 정의하세요
<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>
이 문장에 집중하세요:
<input type="file" name="txt_file" id="txt_file" multiple class="file-loading" />
multiple은 여러 파일을 동시에 업로드할 수 있음을 나타내고, class="file-loading"은 태그 스타일을 나타냅니다.
2.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; };
설명:
(1) fileinput() 메소드는 많은 속성을 포함하는 json 데이터로 전달됩니다. 각 속성은 업로드 제어를 초기화할 때의 특성을 나타냅니다. 이러한 속성이 설정되지 않은 경우 기본 설정을 사용한다는 의미입니다. 정원 친구들이 여기에 포함된 속성을 확인하려면 끝에 표시된 대로 fileinput.js의 소스 코드를 열 수 있습니다.
이러한 속성을 구체적으로 설정하지 않으면 기본값이 사용됩니다.
(2) $("#txt_file").on("fileuploaded", function (event, data, PreviewId, index) {}이 메서드는 업로드가 완료된 후 콜백 이벤트를 등록합니다. 즉, 업로드된 후 파일은 내일 모레 처리됩니다.
이 방법을 입력하세요.3. 백엔드 C# 대응 방식
js의 초기화 제어 메소드 fileinput()에 매개변수 url이 있다는 것을 아직도 기억하시나요? 이 url에 해당하는 값은 C#의 해당 처리 방법을 나타냅니다. 아니면 백그라운드 처리 방법을 게시하세요.
[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 }; }
블로거의 프로젝트는 엑셀을 업로드하는 것이기 때문에 여기서는 NPOI의 로직을 사용합니다. 사진 등의 파일을 업로드하는 경우에는 GDI를 사용하여 사진을 처리할 수 있습니다.
4. 동시에 여러 파일 업로드
여러 파일이 동시에 업로드되면 프런트엔드는 여러 비동기 요청을 백그라운드로 보냅니다. 즉, 세 개의 파일이 동시에 업로드되면 백그라운드의 ImportOrder 메서드가 세 번 입력됩니다. . 이를 통해 멀티스레딩을 사용하여 동시에 세 개의 파일을 처리할 수 있습니다.
3. 요약
이것으로 부트스트랩 파일 입력의 기본 사용법 소개는 끝났을 것입니다. 사실 업로드 구성 요소일 뿐이며 고급 사용법은 없습니다. 인터페이스를 더욱 친숙하게 만들고 사용자 경험을 향상시키는 데 중점을 두고 있습니다.
부트스트랩 파일 입력 파일 업로드 컴포넌트의 자세한 사용법에 대한 모든 것입니다.