我有一个非常简单的任务,只需要上传一个文件,并有AJAX张贴到索引页面:
<input type="file" id="file-selector" accept=".txt">
关联Javascript:
const fileSelector = document.getElementById('file-selector');
fileSelector.addEventListener('change', (event) => {
const file = event.target.files[0];
const reader = new FileReader();
reader.addEventListener('load', event => {
const txtFile = event.target.result;
$.ajax({
type: "POST",
url: "/ControlData?handler=FileUploader",
error: function (request, status, error) { alert(request.responseText); },
data: txtFile,
cache: false,
contentType: false,
processData: false,
headers: { "RequestVerificationToken": "@token" }
});
});
reader.readAsText(file);
});
/Pages/ControlData/Index.cshtml.cs中的代码:
public IActionResult OnPostFileUploaderAsync(IFormFile model)
{
return null;
}
应用程序运行良好,文件被选中,但POST调用总是得到404:
发布于 2021-03-11 10:44:33
应用程序运行良好,文件被选中,但POST调用总是得到404
请检查页面路由是否配置了路由数据参数,如@page "{title}"
等,会导致HTTP404错误。
需要上传一个文件,并让AJAX将其发布到/Pages/ControlData/Index.cshtml.cs public IActionResult OnPostFileUploaderAsync(IFormFile模型)中的Index page Code中
要将选定的文件发布到处理程序OnPostFileUploaderAsync
,可以尝试修改代码,如下所示。
<script>
const fileSelector = document.getElementById('file-selector');
fileSelector.addEventListener('change', (event) => {
const file = event.target.files[0];
//post the selected file through formdata
//instead of using the readAsText() method to read the contents of the specified file
var txtFile = new FormData();
txtFile.append("model", file);
$.ajax({
type: "POST",
url: "/ControlData/Index?handler=FileUploader",
error: function (request, status, error) { alert(request.responseText); },
data: txtFile,
cache: false,
contentType: false,
processData: false,
headers: { "RequestVerificationToken": "@token" }
});
});
</script>
测试结果
https://stackoverflow.com/questions/66574446
复制相似问题