我希望能够将文件发送到MVC VNext网络服务器。
我读过这篇文章 ,它的确很有效。 但是如何在不使用
原因是因为我想在不加载新页面的情况下上传文件。
我读过这篇文章 ,但似乎没有用。 参数IFormFile总是为null。
尝试使用input type="file" , FormData , $.post()
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上传多个图像
JSON
添加视图的输入文件标记。
我们将添加一些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文件夹中(以防止覆盖具有相同名称的文件)