繁体   English   中英

asp.net mvc Ajax在jquery插件中使用fileinput提交表单

[英]asp.net mvc Ajax submit form with fileinput in jquery plugin

我的表格有问题。

我需要使用ajax提交带有表单中的fileinput的表单。 在这种形式下,我将插件与fileinput一起使用。 这是网站

这是我的代码:

<link href="~/Content/Plugin/bootstrap-fileinput-master/css/fileinput.min.css" rel="stylesheet" />
<script src="~/Content/Plugin/bootstrap-fileinput-master/js/fileinput.min.js"></script>
<script src="~/Content/Plugin/bootstrap-fileinput-master/js/fileinput_locale_zh.js"></script>

    @using (Ajax.BeginForm(null, null, new AjaxOptions(){
            HttpMethod = "post",Url = Url.Action("Upload", "WorkItem"),
                InsertionMode = InsertionMode.Replace, LoadingElementDuration = 2000,
                OnSuccess = "completed" },
                new { role = "form", enctype = "multipart/form-data" }))
        {
        <div class="input-group">
            <span class="input-group-addon" id="basic-addon1">TITLE</span>
            <input type="text" name="Descr" class="form-control" aria-describedby="basic-addon1">
        </div>
        <div class="m-b-5"></div>

        <div class="input-group">
            <span class="input-group-addon" id="basic-addon1">POINT</span>
            <input type="text" name="Point" class="form-control" aria-describedby="basic-addon1">
        </div>
        <div class="m-b-5"></div>
        <div class="input-group">
            <span class="input-group-addon" id="basic-addon1">DESCR</span>
            <input type="text" name="Descr" class="form-control" aria-describedby="basic-addon1">
        </div>
        <div class="m-b-5"></div>
        <input id="file-0a" name="file" class="file" type="file" data-min-file-count="1">
        <br />
        <button type="submit" class="btn btn-primary">Submit</button>
        <button type="reset" class="btn btn-default">Reset</button>
    }

当我单击提交按钮时,无法接受任何文件。 怎么了?

正如@Stepher Muecke告诉@Ajax.BeginForm不能用于发布文件。 我对插件没有任何想法,我使用以下方法:

    $("#btnUploadExcel").click(function () {

            if ($("#newuploadexcel").val() == '') {
                notie.alert(2, "Please Select Any File", 2);
            }
            else {

                if (window.FormData!= undefined) {

                    var fileUpload = $("#newuploadexcel").get(0);
                    var files = fileUpload.files;

                    // Create FormData object
                    var fileData = new FormData();

                    // Looping over all files and add it to FormData object
                    for (var i = 0; i < files.length; i++) {
                        fileData.append(files[i].name, files[i]);
                    }

                    // Adding one more key to FormData object
                    //      fileData.append('contentId', contentId); commented as now supplierId is passed in the excel itself

                    $.ajax({
                        url: '/BulkStock/UploadExcel',
                        data: fileData,
                        type: "POST",
                        async: true,
                        dataType: 'json',
                        contentType: false,
                        processData: false,
                        success: function (result) {

                            var data = result.message;
                            //1=Failure, No excel
                            //2= Failue, with excel
                            //3=success, no excel

                            if (result.errmsg == '3') {
                                notie.alert(1, data, 6);
                            }
                            else if (result.errmsg == '1') {
                                notie.alert(3, data, 6);
                            }
                            else {
                                window.location = result.link;
                                notie.alert(3, data, 10);
                            }

                        },
                        error: function (response) {

                            console.log(response.responseText);
                        },
                        failure: function (response) {
                            console.log(response.responseText);
                        }
                    });

                    $("#newUpload").modal('hide');

                } else {
                    notie.alert(3, "FormData is not supported.", 3);
                }
            }
        });

我要获取文件的控制器是:

    public JsonResult UploadExcel()
        {
            string filePath = String.Empty;
            string fileName = string.Empty;
            if (Request.Files.Count > 0)
            {
                    //  Get all files from Request object  
                    HttpFileCollectionBase files = Request.Files;

                    for (int i = 0; i < files.Count; i++)
                    {
                        HttpPostedFileBase file = files[i];
                        fileName = file.FileName;
                        string extension = System.IO.Path.GetExtension(fileName);
                        if (extension.Equals(".xls") || extension.Equals(".xlsx"))
                        {
                            var now = DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture);
                            string my3DigitRandomNumber = now.Substring(now.Length - 7, 3);
                            fileName = (file.FileName.Replace(extension, "")) + (my3DigitRandomNumber + extension);
                            filePath = string.Format("{0}/{1}", Server.MapPath("~/excelfiles"), fileName);
                            file.SaveAs(filePath);
                          }
                    }
              }
    }
Create a folder with the name "excelfiles" in your solution

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM