2017-07-08 87 views
2

只是写一个简单的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控制器创建的目录反正。

+0

哪一行抛出异常? – mjwills

+0

上线所在的文件流实例 – user1994100

回答

2

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

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