Heim  >  Artikel  >  Backend-Entwicklung  >  asp.net Core MVC-Implementierung eines Datei-Upload-Beispiels

asp.net Core MVC-Implementierung eines Datei-Upload-Beispiels

高洛峰
高洛峰Original
2017-02-07 11:33:031113Durchsuche

Die Datei-Upload-Funktion wird in meiner Arbeit verwendet~~

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(&#39;"&#39;);
        //这个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();
    }
 
  }

Ansicht:

<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>

Die Datei wird hochgeladen zu wwwroot Es ist unter der Verzeichnisdatei, ich verstehe es noch nicht und lerne immer noch ~~

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

Das Folgende wird über jquery ajax hochgeladen

Der z-Parameter der Post-Aktion ist nutzlos, da es nur eine Post-Aktion gibt, die einen 404-Fehler verursacht, also habe ich eine Get-Aktion hinzugefügt

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(&#39;"&#39;);
    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);
}

Ansicht

<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>


Begrüßen Sie alle zur Kommunikation ~ Das Obige ist Ich hoffe, dass der gesamte Inhalt dieses Artikels für das Studium aller hilfreich sein wird. Ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.

Weitere Artikel zur Implementierung von Datei-Upload-Beispielen in asp.net core mvc finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn