2017-07-08 89 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); 
}