C# .Net核心文件在Web api中不起作用
我有一个使用ajax提交的文件,但在服务器上我没有收到任何东西C# .Net核心文件在Web api中不起作用,c#,asp.net-core,C#,Asp.net Core,我有一个使用ajax提交的文件,但在服务器上我没有收到任何东西 let file = document.getElementById('file').files[0]; 我不做ajax调用 axios.post('http://localhost:5000/File/Create', file) 在我的.Net内核中,我期待着这个 [HttpPost] public IActionResult Create([FromBody] IFormFile file) {
let file = document.getElementById('file').files[0];
我不做ajax调用
axios.post('http://localhost:5000/File/Create', file)
在我的.Net内核中,我期待着这个
[HttpPost]
public IActionResult Create([FromBody] IFormFile file)
{
return Ok();
}
这是行不通的。我在数据类型中的措辞是错误的。我不确定
axios
如何处理上传。但通常需要发送包含该文件的FormData。使用jQuery ajax发送表单数据时,需要确保将processData
和contentType
标志设置为false
像这样的东西会有用的
$("#saveBtn").click(function(e) {
e.preventDefault();
var fdata = new FormData();
var fileInput = $('#logo')[0];
var file = fileInput.files[0];
fdata.append("logo", file);
$.ajax({
type: 'post',
url: "@Url.Action("Create", "File")",
data: fdata,
processData: false,
contentType: false
}).done(function(result) {
// do something with the result now
console.log(result);
});
});
假设您在FileController中有一个创建操作方法,该方法获取文件并将其保存到应用程序根目录中的某个目录中
public class FileController : Controller
{
private readonly IHostingEnvironment hostingEnvironment;
public FileController(IHostingEnvironment environment)
{
hostingEnvironment = environment;
}
[HttpPost]
public IActionResult SaveFile(IFormFile logo)
{
if (logo != null)
{
//simply saving to "uploads" directory
var uploads = Path.Combine(hostingEnvironment.WebRootPath, "uploads");
var filePath = Path.Combine(uploads, logo.FileName);
logo.CopyTo(new FileStream(filePath, FileMode.Create));
return Json(new { status = "success" });
}
return Json(new { status = "error" });
}
}
不幸的是,我们对您的问题进行了简要描述,但假设您的客户端和服务上的所有其他配置都已正确配置 我认为您的主要问题是发送的数据缺少
键:“file”
,这导致文件
被接收为null
。因此,这必须起作用:
axios.post
(
'http://localhost:5000/File/Create',
{
file: file
}
)
希望这有帮助。请显示发送的数据以及服务器上的
文件所包含的内容。另外,如果不是AJAX
post,那么axios
可以做什么?有关如何使用axios上载文件的信息,请参阅。至少,您需要使用FormData
。您在客户端做得不对。看一看。