如何使用JQuery将文件上传到MVC VNext webserver?

我希望能够将文件发送到MVC VNext网络服务器。

我读过这篇文章 ,它的确很有效。 但是如何在不使用

情况下上传文件?

原因是因为我想在不加载新页面的情况下上传文件。

我读过这篇文章 ,但似乎没有用。 参数IFormFile总是为null。

尝试使用input type="file"FormData$.post()

 $.ajaxSetup({processData:false,contentType:false}); $("input[type=file]").change(function() { var data = new FormData(); data.append("file", this.files[0]); $.post("/path/to/server", data) }); 

或者,将文件转换为JSON对象使用AJAX,PHP和jQuery上传多个图像

添加视图的输入文件标记。

     

我们将添加一些javascript来收听提交按钮事件并通过ajax发送数据。

 @section Scripts {  } 

你应该有一个动作方法来接受文件发布

 public class HomeController : Controller { private readonly IHostingEnvironment hostingEnvironment; public HomeController(IHostingEnvironment environment) { hostingEnvironment = environment; } [HttpPost] public IActionResult Index(IFormFile logo) { if (logo != null) { var uploads = Path.Combine(hostingEnvironment.WebRootPath, "uploads"); var filePath = Path.Combine(uploads, GetUniqueFileName(logo.FileName)); logo.CopyTo(new FileStream(filePath, FileMode.Create)); } // to do : Return something return RedirectToAction("Index","Home"); } private string GetUniqueFileName(string fileName) { fileName = Path.GetFileName(fileName); return Path.GetFileNameWithoutExtension(fileName) + "_" + Guid.NewGuid().ToString().Substring(0, 4) + Path.GetExtension(fileName); } } 

这将使用Guids生成的随机文件名将文件保存到应用程序的wwwwroot目录中的uploads文件夹中(以防止覆盖具有相同名称的文件)