【发布时间】:2021-04-05 11:42:24
【问题描述】:
我正在尝试使用 ASP.NET MVC 将文件上传到服务器。我正在使用 Ajax 和控制器,我的代码似乎可以正常工作,但无法将文件上传到服务器。
这是我的代码;你能告诉我我做错了什么吗?
function SubmitAddEdit(form) {
$.validator.unobtrusive.parse(form);
if ($(form).valid()) {
var data = $(form).serializeJSON();
data = JSON.stringify(data);
$.ajax({
type: 'POST',
url: apiurl,
data: data,
contentType: 'application/json',
success: function (data) {
if (data.success) {
popup.modal('hide');
ShowMessage(data.message);
dataTable.ajax.reload();
} else {
ShowMessageError(data.message);
}
}
});
}
return false;
}
<form onsubmit="return SubmitAddEdit(this)" enctype = "multipart/form-data">
<div class="col-lg-6">
<!-- The file input field used as target for the file upload widget -->
<input type="file" name="files" id="files" multiple="multiple">
</div>
</form>
public async Task<IActionResult> PostTicket(List<IFormFile> files, [FromBody] Ticket ticket)
{
var fileName = await _dotnetdesk.Ticket(files, _env);
}
public async Task<string> Ticket(List<IFormFile> files, IHostingEnvironment env)
{
var result = "";
var webRoot = env.WebRootPath;
var uploads = System.IO.Path.Combine(webRoot, "uploads");
var extension = "";
var filePath = "";
var fileName = "";
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
extension = System.IO.Path.GetExtension(formFile.FileName);
fileName = Guid.NewGuid().ToString() + extension;
filePath = System.IO.Path.Combine(uploads, fileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await formFile.CopyToAsync(stream);
}
result = fileName;
}
}
return result;
}
这是我通过 ASP.NET MVC 上传文件的代码,但它没有进入循环内部,每次我尝试调试文件时都会得到 0 的计数。请让我知道我做错了什么。
【问题讨论】:
标签: asp.net ajax asp.net-mvc asp.net-mvc-4