我可以上传文件的输入文件的变化,而不是使用超文本标记语言助手class.but,我需要读取和获取的数据上传的文本文件的提交按钮。
下面是我在html中使用的代码:
<div>
   <input id="uploadtxtfile" type="file" multiple />
   <button type="submit" class="btn-sm" id="btnuploadfile"/>                         
</div>以及我正在调用的jquery代码:
$('#uploadtxtfile').change(function (e) {
    var i = 0;
    var files = $("#uploadtxtfile").get(0).files;
    fileData = new FormData();      
    for (i; i < files.length; i++) {
        var fileName = e.target.files[0].name;
        fileData.append(fileName, files[i]);
        $("#txtUpload").val(fileName);         
    }       
    $.ajax({
        type: "POST",
        url: "/ViewProcessEDI/UploadTextFile",
        async: true,
        dataType: "json",
        contentType: false,
        processData: false,
        data: fileData,
        success: function (res) {
            if (res.Message == "Success") {
                divListProcessEDI($("#currentPage").val());
                popup.close();
                setTimeout(function () {
                    Message('Success!', 'TextFile Upload Successfully!', 's');
                }, 100);
            }
            else {
                Message('Error!', res.Message, 'e');
            }
        }
    });
});而控制器的功能是:
我怎样才能在submit button.Can上上传文件?任何人都可以在这方面指导我。
[HttpPost]
    public async Task<JsonResult> UploadTextFile()
    {
        string ErrorMessage = string.Empty;
        Dictionary<string, string> returnVal = new Dictionary<string, string>();
        try
        {
            CredentialsMaster objCredentialsMaster = new CredentialsMaster();
            if (CheckSession.CheckStoreOwnerSession(ref objCredentialsMaster))
            {
                if (Request.Files.Count > 0)
                {
                    HttpFileCollectionBase files = Request.Files;
                    for (int i = 0; i < files.Count; i++)
                    {
                        HttpPostedFileBase file = files[i];
                        string fname;
                        // Checking for Internet Explorer  
                        if (Request.Browser.Browser.ToUpper() == "IE" || Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER")
                        {
                            string[] testfiles = file.FileName.Split(new char[] { '\\' });
                            fname = testfiles[testfiles.Length - 1];
                        }
                        else
                        {
                            fname = file.FileName;
                        }
                        if (file != null && file.ContentLength > 0)
                        {
                            // Get the complete folder path and store the file inside it.  
                            file.SaveAs(Path.Combine(@"E:\EDITextFiles", fname));                               
                        }
                    }
                }
            }
            else
            {
                ErrorMessage = "Session Expired";
            }
        }
        catch (Exception ex)
        {
            ErrorMessage = ex.Message;
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return Json("Upload failed");
        }           
        return Json("File Uploaded Successfully");
    }谢谢。
发布于 2020-07-08 16:44:08
我从下面的帖子得到了我需要得到的答案:passing file to controller without using form,
其中我需要在javascript中将发布的文件名作为jQuery("# file ").get(0).files传递,这样我就可以在控制器函数中获得发布的文件名。
发布于 2020-07-10 05:55:21
你的问题的本质是如何在没有@HTML帮助器的情况下做到这一点。通过使用表单元素并调用操作,您始终可以在没有这些帮助器的情况下执行操作。@HTML helpers只是帮助创建HTML5元素。如果需要,form元素将允许调用控制器,而无需使用Ajax。
https://stackoverflow.com/questions/62787732
复制相似问题