>  기사  >  웹 프론트엔드  >  Bootstrap Fileinput 파일 업로드 component_javascript 스킬 사용법에 대한 자세한 설명

Bootstrap Fileinput 파일 업로드 component_javascript 스킬 사용법에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 09:00:093532검색

최근 시간이 있어서 부트스트랩 파일 입력 구성 요소의 몇 가지 일반적인 용도를 요약했습니다. 이를 참고하고 향후 검색을 용이하게 하기 위해 스크립트 홈 플랫폼에서 공유하고 싶습니다. 이 글이 잘 못 쓰여졌다면 양해해 주시기 바랍니다.

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 &#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 };
}

블로거의 프로젝트는 엑셀을 업로드하는 것이기 때문에 여기서는 NPOI의 로직을 사용합니다. 사진 등의 파일을 업로드하는 경우에는 GDI를 사용하여 사진을 처리할 수 있습니다.

4. 동시에 여러 파일 업로드

여러 파일이 동시에 업로드되면 프런트엔드는 여러 비동기 요청을 백그라운드로 보냅니다. 즉, 세 개의 파일이 동시에 업로드되면 백그라운드의 ImportOrder 메서드가 세 번 입력됩니다. . 이를 통해 멀티스레딩을 사용하여 동시에 세 개의 파일을 처리할 수 있습니다.

3. 요약

이것으로 부트스트랩 파일 입력의 기본 사용법 소개는 끝났을 것입니다. 사실 업로드 구성 요소일 뿐이며 고급 사용법은 없습니다. 인터페이스를 더욱 친숙하게 만들고 사용자 경험을 향상시키는 데 중점을 두고 있습니다.

부트스트랩 파일 입력 파일 업로드 컴포넌트의 자세한 사용법에 대한 모든 것입니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.