File upload 文件上载.NET核心';格式文件';不包含';SaveAsASync';没有扩展方法

File upload 文件上载.NET核心';格式文件';不包含';SaveAsASync';没有扩展方法,file-upload,asp.net-web-api,File Upload,Asp.net Web Api,我正在尝试使用ASP.NET核心Web Api上载文件。 我发现了很多这样的代码: namespace ModelBindingWebSite.Controllers { public class HomeController : Controller { private IHostingEnvironment _environment; public HomeController(IHostingEnvironment environment) {

我正在尝试使用ASP.NET核心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();
    }
}
namespace ModelBindingWebSite.Controllers
{
公共类HomeController:控制器
{
私人IHostingEnvironment\u environment;
公共家庭控制器(IHostingEnvironment环境)
{
_环境=环境;
}
公共IActionResult索引()
{
返回视图();
}
[HttpPost]
公共异步任务索引(ICollection文件)
{
var uploads=Path.Combine(_environment.WebRootPath,“uploads”);
foreach(文件中的var文件)
{
如果(file.Length>0)
{
var fileName=ContentDispositionHeaderValue.Parse(file.ContentDisposition.fileName.Trim(“”);
wait file.SaveAsAsync(Path.Combine(上传,文件名));
}
}
返回视图();
}
}
我发现错误
ifformfile
不包含
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");

因此,我是否应该将其替换为:byte[]byteArray=Encoding.UTF8.GetBytes(上载);MemoryStream stream=new MemoryStream(byteArray);wait file.CopyToAsync(stream);Yep-您拥有该流,因此在完成后也不要忘记处理它…用using()包装新的MemoryStream块