• uppy 上传文件以及从上传的Excel文件中取出数据并保存后显示到html表格


    uppy版本为2.1.1

    html

    <environment names="Development">
        <link rel="stylesheet" href="~/lib/uppy/uppy.css" asp-append-version="true" />
        <link rel="stylesheet" href="~/lib/datatables/css/dataTables.bootstrap4.css" asp-append-version="true" />
    
    </environment>
    <environment names="Production">
        <link rel="stylesheet" href="~/lib/datatables/css/dataTables.bootstrap4.min.css" asp-append-version="true" />
        <link rel="stylesheet" href="~/lib/uppy/uppy.min.css" asp-append-version="true" />
    
    </environment>
    
    <form class="form-horizontal form-label-left input_mask" id="UploadFileForm" method="post" onkeydown="if (event.keyCode==13) return false;">
       <input id="Id" name="Id" value="@Model.Id" type="hidden" />
        <div class="form-group">
            <div id="drag-drop-area"></div>
        </div>
    
    
    
    <div class="UppyProgressBar"></div>
    </form>
    <div>
    
        <table id="QueryTable" class="table mb-0" cellspacing="0" width="100%">
            <thead>
                <tr>
                    <th> </th>
                    <th> </th>
                    <th> </th>
                    <th>&nbsp;</th>
                </tr>
            </thead>
        </table>
    
    </div>
    
    <!-- Uploaded files list -->
    
    <environment names="Development">
        <script src="~/lib/datatables/js/jquery.dataTables.js" asp-append-version="true"></script>
        <script src="~/lib/datatables/js/dataTables.bootstrap4.js" asp-append-version="true"></script>
        <script src="~/lib/uppy/uppy.js" asp-append-version="true"></script>
        <script src="~/lib/jquery-serialize-object/jquery.serialize-object.min.js" asp-append-version="true"></script>
        <script src="~/js/UploadReport.js" asp-append-version="true"></script>
    </environment>
    <environment names="Production">
        <script src="~/lib/datatables/js/jquery.dataTables.min.js" asp-append-version="true"></script>
        <script src="~/lib/datatables/js/dataTables.bootstrap4.min.js" asp-append-version="true"></script>
        <script src="~/lib/jquery-serialize-object/jquery.serialize-object.min.js" asp-append-version="true"></script>
        <script src="~/lib/uppy/uppy.min.js" asp-append-version="true"></script>
        <script src="~/js/UploadReport.js" asp-append-version="true"></script>
    </environment>

    js

    var uploadForm = $('#UploadFileForm');
    $(document).ready(function () {
    
        //document.querySelector('.Uppy').innerHTML = ''
        InitUploadButton();
    });
    
    function InitUploadButton() {
    
        const uppy = new Uppy.Core({
            autoProceed: true, restrictions: {
                maxNumberOfFiles: 1,
                minNumberOfFiles: 1
                //allowedFileTypes: ['.*']
            }
        })
        uppy.use(Uppy.Dashboard, {
            inline: true,
            target: '#drag-drop-area',
            allowMultipleUploads: false,
            showLinkToFileUploadResult: false,
            showProgressDetails: false,
            showSelectedFiles: true,
            showRemoveButtonAfterComplete: true,
            hideRetryButton: true,
            hidePauseResumeButton: false,
            hideCancelButton: false,
            height: 300
        })
        uppy.use(Uppy.ProgressBar, {
            target: '.UppyProgressBar',
            hideAfterFinish: false,
        })
        uppy.use(Uppy.XHRUpload, {
            endpoint: '/*/*?Id=' + $('#Id').val(),
            formData: true,
            fieldName: 'files[]',
        })
    
        // And display uploaded files
        uppy.on('upload-success', (file, response) => {
            var data = response.body;
            if (data.Result === true) {
                CustomFunction.ShowNotify('success', 'Success', data.Message);
                searchData(true);
            }
    
    
            else
                CustomFunction.ShowNotify('error', 'Error', data.Message);
        })
        uppy.on('upload-error', (file, error, response) => {
            console.log('error message:', error);
            CustomFunction.ShowNotify('error', 'Error', error);
        });
    }
    
    function searchData(resetPage) {
        uploadForm.waitMe({
            effect: 'win8',
            text: 'Please wait...',
            bg: 'rgba(255,255,255,0.7)',
            color: '#000',
            maxSize: '',
            textPos: 'vertical',
            fontSize: ''
        });
        if ($.fn.dataTable.isDataTable('#QueryTable')) {
            const table = $('#QueryTable').DataTable();
            table.ajax.reload(null, resetPage);
        }
        else {
            $('#QueryTable').DataTable({
                processing: true,
                serverSide: true,
                pageLength: 20,
                lengthChange: false,
                displayStart: 0,
                ajax: {
                    url: "/*/*",
                    type: "POST",
                    data: function (d) {
                        // @ts-ignore
                        d.Id = $('#Id').val();
                    },
                    "dataSrc": function (json) {
                        return json.item;
                    }
                },
                "ordering": false,
                "scrollX": true,
                "searching": false,
                "columns": [
    
                    { "data": " " },
                    { "data": " " },
                    { "data": " " },
                    {
                        "data": null,
                        orderable: false,
                        className: 'dt-body-center',
                        render: function (data, type, full, meta) {
                            return "<div style='white-space:nowrap;'><a class='confirm' href='javascript:void(0)' onclick=\"Delete('" + data.VId + "')\"><i class=\"fa fa fa-minus-square-o\" aria-hidden=\"true\" style=\"color:red;\"></i></a></div>";
                        }
                    }
                ],
                "createdRow": function (row, data, index) {
                    // @ts-ignore
                    if (data.Enabled === "N") {
                        $('td', row).css("color", "red");
                    }
                }
            }).on('draw.dt', function () {
                uploadForm.waitMe('hide');
            });
        }
    
    
    }
    
    function Delete(VId) {
        if (confirm('Please confirm if you want to delete the data.')) {
            $.ajax({
                url: "/*/*",
                type: "POST",
                data: { VId: VId },
                dataType: 'json',
                beforeSend: function () {
                    uploadForm.waitMe({
                        effect: 'win8',
                        text: 'Please wait...',
                        bg: 'rgba(255,255,255,0.7)',
                        color: '#000',
                        maxSize: '',
                        textPos: 'vertical',
                        fontSize: ''
                    });
                },
                error: function (cc, msg) {
                    CustomFunction.ShowNotify('error', 'Error', msg);
                },
                success: function (data) {
                    if (data.Result === true) {
                        CustomFunction.ShowNotify('success', 'Success', data.Message);
                        searchData(false);
                    }
                    else
                        CustomFunction.ShowNotify('error', 'Error', data.Message);
                }
            }).always(function () {
                uploadForm.waitMe('hide');
            });
        }
    }

    后台方法

    using ClosedXML.Excel;
    
     [HttpPost]
            public ActionResult<ReturnMessageDataModel> UploadRFilesByTaskId(string TaskId)
            {
                try
                {
                    var result = new ReturnMessageDataModel();
    
                    TaskVendorDataModel model = new TaskVendorDataModel();
                    string pathrefer = Request.Headers[HeaderNames.Referer].ToString();
                    string Serverpath = _hostingEnvironment.ContentRootPath + "/" + Constants.FilePathUpload + "/";
    
                    var postedFile = Request.Form.Files[0];
    
    
                    if (postedFile == null )
                    {
                        result.Result = false;
                        result.Message = "未获取任何文件信息";
                        return result;
                    }
    
                    string file;
    
                    //In case of IE
                    if (Request.Headers[HeaderNames.UserAgent].ToString().ToUpper() == "IE")
                    {
                        string[] files = postedFile.FileName.Split(new char[] { '\\' });
                        file = files[files.Length - 1];
                    }
                    else // In case of other browsers
                    {
                        file = postedFile.FileName;
                    }
                   
    
                    if (!Directory.Exists(Serverpath))
                    {
                        Directory.CreateDirectory(Serverpath);
                    }
    
                    string fileDirectory = Serverpath;
    
                    string ext = Path.GetExtension(fileDirectory + "/" + file);
                    var newFileName = Guid.NewGuid() + ext; // Creating a unique name for the file 
    
                    var filePath = Serverpath + "/" + newFileName;
    
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        postedFile.CopyTo(stream);
                    }
    
                    Response.Headers.Add("Vary", "Accept");
                    Response.ContentType = "application/json";
    
                    List<string> Codes = new List<string>();
    
    
    
              //EXCEL 中取出数据
                    using (XLWorkbook wb = new XLWorkbook(filePath)) //FilePath
                    {
                        var ws = wb.Worksheets.First();
                        var range = ws.RangeUsed();
                        for (int j = 2; j < range.RowCount() + 1; j++)
                        {
                            Codes.Add(ws.Cell(j, 1).Value.ToString());
                        }
    
                    }
    
              
                    var ResultCode = _upload.FindVendorDataByVcodes(Codes);
                    if (ResultCode.Count() == 0)
                    {
                        result.Message = "上传数据错误,请重新上传!";
                        return result;
                    }
    
                    model.Creator = User.Identity.Name;
                    model.FileName = file;
                    model.VenCodes = ResultCode;
                    model.TaskId = TaskId;
    
                    return  _upload.InsertFileData(model);
    
                    
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "UploadFiles Error");
                    return BadRequest(Constants.Return_Failed + Environment.NewLine + ex.Message);
                }
            }
  • 相关阅读:
    去重合并两个有序链表之直接操作和Set集合操作
    MongoDB 操作
    Fork/Join框架与Java8 Stream API 之并行流的速度比较
    OpenResty(Nginx + Lua)常用操作
    Linux 常用命令,处理端口和Tomcat,mysql
    异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class p
    RSA算法的C++string实现(模幂算法和欧几里得算法的使用)后附思路
    数据库设计初探(宿舍管理系统)
    阿里云轻量级服务器上JDK及tomcat部署配置
    Spring RestTemplate 之post请求
  • 原文地址:https://www.cnblogs.com/lixia0604/p/15930451.html
Copyright © 2020-2023  润新知