已尝试
This Answer
但它没有起作用。所以寻求帮助。
我有一个。Net 6 Razor页面,我正试图从那里上传一个文件。
这是我的
AjaxFileUpload。CSHtml
<h3>Ajax File Upload</h3>
<form method="post">
<div class="mb-3">
<label for="formFile" class="form-label">Select File 1</label>
<input class="form-control" type="file" id="formFile1">
<br/>
<button type="button" class="btn btn-info" onclick="UploadFile1ViaAjax()">Upload File 1</button>
<span id="File1UploadStatus"></span>
</div>
</form>
Ajax调用
<script>
function UploadFile1ViaAjax()
{
var file1 = $('#formFile1').prop("files")[0];
var url = "/Employees/AjaxFileUpload?handler=UploadFile1";
formData = new FormData();
formData.append(file1.name, file1);
alert("Uploading file 1 : " + file1.name);
$.ajax({
type: "POST",
url: url,
contentType: 'multipart/form-data',
contentType: false,
processData: false,
data: formData,
headers: {
RequestVerificationToken:
$('input:hidden[name="__RequestVerificationToken"]').val()
},
success: function (result) {
alert("success: " + JSON.stringify(result));
},
failure: function (result) {
alert("failure");
},
error: function (result) {
alert("error");
},
}).done(function (result) {
alert("ajax call complete.");
});
}
</script>
最后是方法背后的代码
AjaxFileUpload。CSHtml.cs
public IActionResult OnPostUploadFile1(IFormFile formData)
{
if (formData != null)
{
return new ObjectResult(new { status = "success" });
}
return new ObjectResult(new { status = "fail" });
}
当我上传一个文件并单击按钮时,ajax调用有效,调试器在代码隐藏方法中被击中,但问题是
IFormFile
对象总是为null。
为什么会发生这种情况?我怎样才能拿到
IFormFile
用我正在上传的文件数据填充的对象?