• Asp.Net 5上传文件 (Core API方式)


    参考文档

    首先在控制器中注入IWebHostEnvironment

    IWebHostEnvironment提供有关正在运行应用程序的Web托管环境的信息。

    属于命名空间Microsoft.AspNetCore.Hosting

    IWebHostEnvironment接口需要注入为控制器依赖性再后来整个控制器使用。

    该IWebHostEnvironment接口有两个属性。

    • WebRootPath -www文件夹的路径(获取或设置包含Web服务应用程序内容文件的目录的绝对路径)
    • ContentRootPath -根文件夹路径包含了所有应用程序文件(获取或设置IFileProvider在WebRootPath指指点点。) 
    private readonly IWebHostEnvironment _webHostEnvironment;
    
    public CommonController(IWebHostEnvironment webHostEnvironment)
    {
        _webHostEnvironment = webHostEnvironment;
    }

    此处根据WebRootPath = "D:\source\repos\AnnualMeeting\Game\wwwroot",把文件放在wwwroot目录下

    文件上传使用IFormFile

     1 [Route("api/[controller]")]
     2 [ApiController]
     3 public class CommonController : ControllerBase
     4 {
     5     private readonly IWebHostEnvironment _webHostEnvironment;
     6 
     7     public CommonController(IWebHostEnvironment webHostEnvironment)
     8     {
     9         _webHostEnvironment = webHostEnvironment;
    10     }
    11     [HttpPost]
    12     [Route("FileUpload")]
    13     public async Task<IActionResult> FileUpload(IFormFile files)
    14     {
    15 
    16         if (files == null && files.Length <= 0)
    17         {
    18             throw new Exception("Files is Null");
    19         }
    20 
    21         var fileExt = Path.GetExtension(files.FileName);
    22         var newFileName = Guid.NewGuid().ToString() + fileExt;
    23         var path = Path.Combine(_webHostEnvironment.WebRootPath, "Avatar\" + newFileName);
    24         try
    25         {
    26             await using var stream = System.IO.File.Create(path);
    27             await files.CopyToAsync(stream);
    28             return Ok(new { msg = "上传成功", fileName = newFileName });
    29         }
    30         catch (Exception e)
    31         {
    32             throw new Exception(e.Message);
    33         }
    34     }
    35 }

    在swagger中可直接上传测试

  • 相关阅读:
    [Jobdu] 题目1528:最长回文子串
    [Jobdu] 题目1510:替换空格
    [Leetcode] Candy
    [Leetcode] Jump Game
    [Leetcode] Longest Valid Parentheses
    [Leetcode] Triangle
    [Leetcode] Populating Next Right Pointers in Each Node
    java web作用域page request session application
    String对象不可改变的特性及内存机制
    Java IO
  • 原文地址:https://www.cnblogs.com/liessay/p/14318201.html
Copyright © 2020-2023  润新知