在asp.net核心客户端中使用ajax上传文件类型



这是我的html

<form enctype="multipart/form-data" class="needs-validation" id="formRequestLeave2">
<div class="row form-group">
<label class="col-md-4" for="File"><strong>Upload File</strong></label>
<div class="col-md-7 form-control">
<input class="form-control custom-file-input" id="fileUpload" name="File" type="file" required>
<label class="custom-file-label">Choose File...</label>
</div>
</div>
</form>

这是我的javascript

function Insert() {
event.preventDefault();
var obj = new Object();
obj.EmployeeId = $("#employeeId2").val();
obj.File = $("#fileUpload").val();
manager = $("#managerName2").val()
$.ajax({
url: "/LeaveDetails/LeaveRequest",
type: "POST",
'data': obj,
})
}

这是我的控制器

public JsonResult LeaveRequest(LeaveRequestVM leaveRequestVM)
{

string uniqueFileName = null;
if (leaveRequestVM.File != null)
{
string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "files");
uniqueFileName = Guid.NewGuid().ToString() + "_" + leaveRequestVM.File.FileName;
string filePath = Path.Combine(uploadsFolder, uniqueFileName);
leaveRequestVM.File.CopyTo(new FileStream(filePath, FileMode.Create));
}
leaveRequestVM.uniqueFileName = uniqueFileName;

var result = repository.LeaveRequest(leaveRequestVM);
return Json(result);
}

我试图使用ajax将文件类型输入从我的视图发送到我的控制器,但结果为空我一直在尝试使用

contentType: false,
processData: false
<form id="frmproduct" method="post" asp-antiforgery="true" class="row gy-1 pt-75" onsubmit="return false">
<span class="btn btn-primary btn-sm btn-file">
<input type="file" name="Image">
</span>
</form>
<script>
frmproduct.onsubmit = async (e) => {
e.preventDefault();
if (!$("#frmproduct").valid())
return false;
let response = await fetch('/base/product/Create', {
method: 'POST',
body: new FormData(frmproduct)
});
let data = await response.json();
};
</script>

并从控制器获取文件

[HttpPost, ValidateAntiForgeryToken]
public async Task<JsonResult> Create(ProductViewModel model, CancellationToken cancellationToken)
{
var File= Request.Form.Files;
}

最新更新