怎么样通过asp.net core mvc实现文件上传功能?

怎么样通过asp.net core mvc实现文件上传功能?

工作用到文件上传的功能,在这个分享下 ~~

Controller:

public class PictureController : Controller
 {
  private IHostingEnvironment hostingEnv;

  public PictureController(IHostingEnvironment env)
  {
   this.hostingEnv = env;
  }
  // GET: /<controller>/
  public IActionResult Index()
  {
   return View();
  }
  public IActionResult UploadFiles()
  {
   return View();
  }
  [HttpPost]
  public IActionResult UploadFiles(IList<IFormFile> files)
  {
   long size = 0;
   foreach (var file in files)
   {
    var filename = ContentDispositionHeaderValue
        .Parse(file.ContentDisposition)
        .FileName
        .Trim('"');
    //这个hostingEnv.WebRootPath就是要存的地址可以改下
    filename = hostingEnv.WebRootPath + $@"\{filename}";
    size += file.Length;
    using (FileStream fs = System.IO.File.Create(filename))
    {
     file.CopyTo(fs);
     fs.Flush();
    }
   }
   ViewBag.Message = $"{files.Count} file(s) /{ size}bytes uploaded successfully!";
    return View();
  }

 }

view:

<form asp-action="UploadFiles"
     asp-controller="Picture"
     method="post"
     enctype="multipart/form-data">
    <input type="file" name="files" multiple />
    <input type="submit" value="Upload Selected Files" />
 </form>

文件是上传到wwwroot目录文件下的,这我也看不太懂还在学习,欢迎大家交流~~

----------------------------------------------------------------------------------------------------------

下面是jquery ajax方式上传的

post方式的action的z参数没用 因为只有一个post方式的会404错误所以又加了一个get的action

Controller:

  public IActionResult UploadFilesAjax()
  {
   return View();
  }
  [HttpPost]
  public IActionResult UploadFilesAjax(string z) 
  {
   long size = 0;
   var files = Request.Form.Files;
   foreach (var file in files)
   {
    var filename = ContentDispositionHeaderValue
        .Parse(file.ContentDisposition)
        .FileName
        .Trim('"');
    filename = @"C:\Users\lg.HL\Desktop" + $@"\{filename}";  
    size += file.Length;
    using (FileStream fs = System.IO.File.Create(filename))
    {
     file.CopyTo(fs);
     fs.Flush();
    }
   }
   string message = $"{files.Count} file(s) / { size}bytes uploaded successfully!";
    return Json(message);
  }

view

<form method="post" enctype="multipart/form-data">
   <input type="file" id="files"
     name="files" multiple />
   <input type="button"
     id="upload"
     value="Upload Selected Files" />
 </form>

jquery

<script type="text/javascript">
  $(document).ready(function () {
   $("#upload").click(function (evt) {
    var fileUpload = $("#files").get(0);
    var files = fileUpload.files;
    var data = new FormData();
    for (var i = 0; i < files.length ; i++) {
     data.append(files[i].name, files[i]);
    }
    $.ajax({
     type: "POST",
     url: "/Picture/UploadFilesAjax",
     contentType: false,
     processData: false,
     data: data,
     success: function (message) {
      alert(message);
     },
     error: function () {
      alert("There was error uploading files!");
     }
    });
   });
  });
</script>

欢迎大家交流~ 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持路饭。