2017-03-03 57 views

回答

0
string path = $"{Directory.GetCurrentDirectory()}{@"\wwwroot\images"}"; 
+0

如果從不同的文件夾爲你的靜態文件這將無法正常工作。更糟糕的是,當部署到像IIS這樣的服務器時,Directory.GetCurrentDirectory可能[不會返回您期望的內容](http://stackoverflow.com/questions/10951599/getting-current-directory-in-net-web-application) 。 –

1

這將是清潔器來注入的IHostingEnvironment,然後或者使用其WebRootPathWebRootFileProvider性質。

例如,在控制器:

private readonly IHostingEnvironment env; 
public HomeController(IHostingEnvironment env) 
{ 
    this.env = env; 
} 

public IActionResult About(Guid foo) 
{ 
    var path = env.WebRootFileProvider.GetFileInfo("images/foo.png")?.PhysicalPath 
} 

在您通常需要使用Url.Content("images/foo.png")來獲取網址爲特定文件的視圖。不過,如果你需要訪問的物理路徑由於某種原因,那麼你可以遵循相同的方法:

@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment env 
@{ 
var path = env.WebRootFileProvider.GetFileInfo("images/foo.png")?.PhysicalPath 
}