ASP.Net核心对路径的访问被拒绝与IFormFile
问题描述:
只是写一个简单的ASP.NET核心的WebAPI,并使用一个简单的POST端点接受IFormFiles时:ASP.Net核心对路径的访问被拒绝与IFormFile
[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;
}
我得到这个错误:
System.UnauthorizedAccessException: Access to the path 'F:\Documents HDD\spec-backend\Resources' is denied
我已经看过,而且显然它是与我的目录是只读的,但我无法弄清楚如何改变这一点,即使在当时是由我的ASP.NET控制器创建的目录反正。
答
最终的答案是,FileStream对象需要路径的文件,而不仅仅是目录的名称。
using (var stream = new FileStream(Path.Combine("Resources", f.FileName), FileMode.Create))
{
await f.CopyToAsync(stream);
result.Add(f.FileName);
}
哪一行抛出异常? – mjwills
上线所在的文件流实例 – user1994100