bootstrap fileinput 多文件上传并回显

网上很多文章,但是回显出问题,上传有两种格式,一种是异步,一种是同步,我用异步多文件上传时,异步的请求到后台会多次调用上传方法,就是有几个文件就调用几次,所以我用同步方式,一并处理,回调一次

前端页面

<head>
    <meta name="viewport" content="width=device-width" />
    <title>日订单导入</title>
    <script src="~/Scripts/fileinput.js"></script>
    <script src="~/Scripts/zh.js"></script>
    <link href="~/Content/fileinput.css" rel="stylesheet" />
</head>
<body>
    <div style="text-align:center">
        <form>
            <div class="modal-title">
                <h4>请选择日订单文件</h4>
            </div>
            <div class="modal-body">
                <input type="file" name="txt_file" id="txt_file" multiple class="file-loading" />
            </div>
            <button type="submit" class="btn btn-default">提交</button>
        </form>
        </div>
    
</body>
</html>


<script type="text/javascript">
    $(function () {
        var control = $("#txt_file");
        var uploadrul = "/VW_Import/DayFileUpload";
        control.fileinput({
            language: 'zh', //设置语言
            uploadUrl: uploadrul, //上传的地址
            allowedFileExtensions: ['xls','xlsx'],//接收的文件后缀
            showUpload: true, //显示批量上传按钮
            showCaption: false,//是否显示标题
            browseClass: "btn btn-primary", //按钮样式
            dropZoneEnabled: true,//是否显示拖拽区域
            uploadAsync: false, //默认异步上传
            showRemove: true, //显示移除按钮
            //showPreview: true, //是否显示预览
            showCaption: false,//是否显示标题
            maxFileCount: 100,
            enctype: 'multipart/form-data',
            validateInitialCount: true,
            previewFileIcon: "<i class='glyphicon glyphicon-file'></i>",

            msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
        });
        //导入文件上传完成之后的事件
        $("#txt_file").on("filebatchuploadsuccess", function (event, data, previewId, index) {
            
            result = $.parseJSON(data.response);
            if (result.success == true) {
                alert("导入成功!");
            }
            else {
                alert(result.errorMsg);
            }
        });
    });
</script>

后台代码

public ActionResult DayFileUpload()
        {
            try
            {
                HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
                List<VW_DayParts> lst = new List<VW_DayParts>();
                List<VW_DayPartsVersion> versionlst = new List<VW_DayPartsVersion>();
                var checkList = dbVW_DayPartsVersion.Entities().ToList();
                bool update = true;

                for (int j = 0; j < files.Count; j++)
                {
                    HttpPostedFile PostedFile = files[j];
                    string fileName = PostedFile.FileName;

                    //VW_DayPartsVersion s = checkList.Where(m => m.FileName.Contains(fileName)).FirstOrDefault();
                    if (checkList.Where(m => m.FileName.Contains(fileName)).FirstOrDefault() != null)
                    {
                        update = false;
                        break;
                    }

                    string filePath = Server.MapPath("~/VW_Upload/DayOrder/" + fileName);
                    PostedFile.SaveAs(filePath);

                    IWorkbook workbook;
                    //XSSFWorkbook hssfworkbook;
                    string fileExt = Path.GetExtension(fileName).ToLower();
                    using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                    {
                        if (fileExt == ".xlsx")
                        {
                            workbook = new XSSFWorkbook(file);
                        }
                        else if (fileExt == ".xls")
                        {
                            workbook = new HSSFWorkbook(file);
                        } else
                        {
                            workbook = null;
                        }

                        //workbook = new XSSFWorkbook(file);

                    }

                    NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(1);
                    //列数
                    int cellCount = sheet.GetRow(0).LastCellNum;
                    //int cellCount = sheet.GetRow(0).LastCellNum;

                    UserLoginInfo loginInfo = aService.GetUserLoginInfo();

                    VW_DayPartsVersion dVersion = new VW_DayPartsVersion();
                    dVersion.FileName = fileName;
                    dVersion.UpTime = DateTime.Now;
                    dVersion.UserId = loginInfo.UserId;

                    string[] tempName = fileName.Split(' ');
                    dVersion.Factory = tempName[1].Substring(0, 4);
                    versionlst.Add(dVersion);

                    for (int i = 1; i <= sheet.LastRowNum; i++)
                    {
                        //int j = 0;//0 3 4 17 18
                        VW_DayParts item = new VW_DayParts();
                        IRow currentRow = sheet.GetRow(i);// i=1 从第二行开始

                        //物料号
                        if (!string.IsNullOrWhiteSpace(currentRow.GetCell(0).ToString()))
                        {
                            item.MATNR = currentRow.GetCell(0).ToString();
                        }
                        //工厂代码
                        if (!string.IsNullOrWhiteSpace(currentRow.GetCell(3).ToString()))
                        {
                            item.Factory = currentRow.GetCell(3).ToString();
                        }
                        //合同编号
                        if (!string.IsNullOrWhiteSpace(currentRow.GetCell(4).ToString()))
                        {
                            item.ContractNo = currentRow.GetCell(4).ToString();
                        }
                        //交货时间
                        if (!string.IsNullOrWhiteSpace(currentRow.GetCell(17).ToString()))
                        {
                            item.DeliveryDate = Convert.ToDateTime(currentRow.GetCell(17).ToString());
                        }
                        //计划数量
                        if (!string.IsNullOrWhiteSpace(currentRow.GetCell(18).ToString()))
                        {
                            item.Quantity = Convert.ToInt32(currentRow.GetCell(18).NumericCellValue);
                        }
                        item.FileName = fileName;
                        item.UpTime = DateTime.Now;
                        item.UserId = loginInfo.UserId;
                        lst.Add(item);
                    }
                }

                if(update)
                {
                    dbVW_DayParts.BulkInsert(lst);
                    dbVW_DayPartsVersion.Insert(versionlst);
                    return Json(MsgCommon.respJsonSuccessMsg());
                }
                else
                {
                    return Json(MsgCommon.respJsonErrorMsg("文件名重复或文件已上传"));

                }

            }
            catch (DbEntityValidationException dbEx)
            {            
                return Json(MsgCommon.respJsonErrorMsg(dbEx.ToString()));
            }
        }

 

posted @ 2020-04-03 08:31  sj2016  阅读(4600)  评论(0编辑  收藏  举报