如何将文件发布到Controller中的参数? 我在Controller中有一个Action断点,我想看看是否可以通过Controller发布文件(删除了一些不需要的文件之后)。
现在,即使我按下了“上传”按钮,断点也会为我提供一个空值而不是文件名。
单击“提交”按钮后,控制台(F12)中显示的文件可以,但是Controller中的断点显示为空。
我应该怎么做才能将文件发布到我的控制器上?
答案 0 :(得分:0)
fileList[]
的文件,但是您的服务器需要一个名称为parameterIsHere
的参数,并且类型应为UploadFiles
。 如何解决:
方法A:
服务器端:按如下所示更改操作方法(请注意类型和名称):
[HttpPost]
public IActionResult UploadAction(List<IFormFile> fileList)
{
// ...
}
客户端:添加CSRF
令牌并将字段名称更改为fileList
:
function sendModifiesList(e) {
e.preventDefault();
fileList.forEach(function(file,idx) {
formData.append(`fileList`, file); //// name should be `fileList`
});
formData.append("__RequestVerificationToken",$("form input[name='__RequestVerificationToken']").val());
console.log("These files will be posted: ", formData.getAll("fileList"));
/*************** EDIT *************************/
// Get the url from the form's action attribute
let url = document.forms[0].action;
let request = new XMLHttpRequest();
// Create a POST request
request.open("POST", url);
// Set up an onload handler to report status
request.onload = function() {
if (request.status == 200) {
console.log("Uploaded!");
} else {
console.log("Error " + request.status + " occurred when trying to upload your file.");
}
};
// Send the form to the server
request.send(formData);
/************ END EDIT ***********************/
};
方法B:
如果您不在乎名称,则只需使用HttpContext.Request.Form.Files
即可获取文件:
[HttpPost]
public IActionResult UploadAction()
{
var files= HttpContext.Request.Form.Files;
// ...
}