使用IFormFile拒绝ASP.Net对路径的核心访问

use*_*100 3 .net c# asp.net asp.net-web-api .net-core

只需编写一个简单的ASP.NET Core WebAPI,并在使用接受IFormFiles的简单POST端点时:

        [HttpPost]
        public async Task<List<string>> Post(List<IFormFile> files)
        {
            long size = files.Sum(f => f.Length);
            List<string> result = new List<string>();

            Console.WriteLine(files.Count);

            foreach (var f in files)
            {
                if (f.Length > 0)
                {
                    Directory.CreateDirectory("Resources");
                    using (var stream = new FileStream("Resources", FileMode.Create))
                    {
                        await f.CopyToAsync(stream);
                        result.Add(f.FileName);
                    }
                }
            }
            return result;
        }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

System.UnauthorizedAccessException:拒绝访问路径'F:\ Documents HDD\spec-backend\Resources'

我已经调查了它,显然它与我的目录只读取有关,但我无法弄清楚如何更改它,即使这样,目录也是由我的ASP.NET控制器创建的.

use*_*100 13

最后的答案是FileStream对象需要路径中文件的名称,而不仅仅是目录.

using (var stream = new FileStream(Path.Combine("Resources", f.FileName), FileMode.Create))
{
    await f.CopyToAsync(stream);
    result.Add(f.FileName);
}
Run Code Online (Sandbox Code Playgroud)