文件上传.NET Core“IFormFile”不包含“SaveAsASync”的定义并且没有扩展方法

2023-12-15

我正在尝试使用 ASP.NET Core Web Api 上传文件。 正如我发现的那样,这段代码:

namespace ModelBindingWebSite.Controllers
{
  public class HomeController : Controller
  {
    private IHostingEnvironment _environment;

    public HomeController(IHostingEnvironment environment)
    {
        _environment = environment;
    }
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public async Task<IActionResult> Index(ICollection<IFormFile> files)
    {
        var uploads = Path.Combine(_environment.WebRootPath, "uploads");
        foreach (var file in files)
        {
            if (file.Length > 0)
            {
                var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                await file.SaveAsAsync(Path.Combine(uploads, fileName));
            }
        }
        return View();
    }
}

我收到错误IFormFile不包含以下定义SaveAsASync并且没有扩展方法。 任何想法?


您可以简单地构建一个方便的扩展以供以后使用

 using System.IO;
 using System.Threading.Tasks;
 using Microsoft.AspNetCore.Http;

 public static class FileSaveExtension
 {
     public static async Task SaveAsAsync(this IFormFile formFile, string filePath)
     {
         using (var stream = new FileStream(filePath, FileMode.Create))
         {
             await formFile.CopyToAsync(stream);
         }
     }

     public static void SaveAs(this IFormFile formFile, string filePath)
     {
         using (var stream = new FileStream(filePath, FileMode.Create))
         {
             formFile.CopyTo(stream);
         }
     }


 }

执行:

formFile.SaveAsAsync("Your-File-Path"); // [ Async call ]
formFile.SaveAs("Your-File-Path");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件上传.NET Core“IFormFile”不包含“SaveAsASync”的定义并且没有扩展方法 的相关文章

随机推荐