在提交按钮 C# MVC 上获取上传的文件
Posted
技术标签:
【中文标题】在提交按钮 C# MVC 上获取上传的文件【英文标题】:Get uploaded file on submit button C# MVC 【发布时间】:2020-10-28 10:44:01 【问题描述】:我可以在输入文件更改时上传文件 不使用 html 助手类。但我需要在提交按钮上读取并获取上传的文本文件的数据。
下面是我在 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');
);
);
和控制器功能是:
如何在提交按钮上获取上传的文件。谁能指导我。
[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");
谢谢。
【问题讨论】:
您是否尝试在互联网上寻找答案?你可以从this link开始 是的,我浏览了链接,但我需要在不使用 MVC 中的 HTML 帮助器类的情况下这样做 所以请描述您的设置和限制并添加代码 sn-p 以便我们更好地了解您的上下文 【参考方案1】:我得到了我需要从以下帖子中得到的答案: passing file to controller without using form,
我需要在 javascript 中将发布的文件名作为 jQuery("#file").get(0).files[0] 传递,以便我可以在控制器函数中获取发布的文件名。
【讨论】:
【参考方案2】:您的问题的本质是如何在没有 @HTML 帮助器的情况下执行此操作。通过使用表单元素并调用操作,您始终可以在没有这些助手的情况下做事。 @HTML 助手只是协助创建 HTML5 元素。如果您需要,表单元素将允许在无需使用 Ajax 的情况下调用控制器。
html form posting to mvc controller
【讨论】:
以上是关于在提交按钮 C# MVC 上获取上传的文件的主要内容,如果未能解决你的问题,请参考以下文章
用C#在winform窗口下点击按钮选择要提交的文件然后上传到数据库或其他地方,还可以让其他人下载和查看