Nab*_*apa 8 asp.net-core-mvc asp.net-core asp.net-core-1.0
我正在尝试从我的ASP.NET核心应用程序的wwwroot文件夹中的images文件夹中提供文件,我已经在Startup类中启用了静态文件访问.
该HostingEnvironment服务为我提供了一个WebRootPath属性,为我提供了wwwroot文件夹的绝对路径,但使用此路径在浏览器的控制台中给出了"不允许加载本地资源"错误.
如果我使用localhost+相对路径从我的浏览器访问该文件,我可以获取图像文件,因此没有关于授权的问题.
我现在需要的是能够将该绝对路径转换为我的Web服务器的相对路径.
鉴于您遇到的错误,在我看来您正试图_env.WebRootPath + "/images/textfile.txt"在您的视图中使用,例如作为href属性.
file:///C:/Users/PathToYourSite/wwwroot/images/textfile.txt,这会在您遇到的错误中结束.您可以在此答案中详细了解相关内容,但在moder Chrome等浏览器中,默认情况下会禁用从http协议到文件协议的请求.因此,IHostingEnvironment当您想要将文件内容作为服务器端逻辑的一部分进行读取时,应使用该方法,以便您可以对它们执行某些操作.
但是,如果您需要在wwwroot中生成指向文件的链接并在视图中使用它们,您有以下几种选择:
使用IUrlHelper以将公共URL解析为wwwroot中的文件,其中"~/"是wwwroot文件夹.然后在需要时使用它,就像一个href:
@Url.Content("~/images/textfile.txt")
Run Code Online (Sandbox Code Playgroud)直接在剃刀视图中创建锚点,其中href属性以"~/".(你甚至在那里获得intellisense)
<a href="~/images/textfile.txt">Get file from wwwroot</a>
Run Code Online (Sandbox Code Playgroud)要在wwwroot中访问文件,请注入IHostingEnvironment您的控制器构造函数:
private IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)
{
_env = env;
}
Run Code Online (Sandbox Code Playgroud)
更新控制器以读取WebRootPath属性并将相关文件路径附加到该属性
var content = System.IO.File.ReadAllText(_env.WebRootPath + "/images/textfile.txt");
Run Code Online (Sandbox Code Playgroud)
这将读取位于/wwwroot/images/textfile.txt内的文件的所有内容
希望有所帮助
| 归档时间: |
|
| 查看次数: |
8947 次 |
| 最近记录: |