我正在尝试从我的 ASP.NET Core 应用程序的 wwwroot 文件夹中的图像文件夹中提供文件,我已经在 Startup
中启用了静态文件访问。类(class)。HostingEnvironment
服务为我提供了 WebRootPath
该属性为我提供了 wwwroot 文件夹的绝对路径,但使用此路径会在我的浏览器控制台中出现“不允许加载本地资源”错误。
如果我使用 localhost
从浏览器访问文件+ 我能够获取图像文件的相对路径,因此没有关于授权的问题。
我现在需要的只是能够将该绝对路径转换为我的 Web 服务器的相对路径。
最佳答案
鉴于您遇到的错误,在我看来您正在尝试使用 _env.WebRootPath + "/images/textfile.txt"
在您的 View 中,例如作为 href 属性。
file:///C:/Users/PathToYourSite/wwwroot/images/textfile.txt
的 URL。 ,以您遇到的错误结束。你可以阅读更多关于 on this answer ,但在现代 Chrome 等浏览器中,默认情况下禁用从 http 协议(protocol)到文件协议(protocol)的请求。 所以
IHostingEnvironment
当您想要读取文件的内容作为服务器端逻辑的一部分时,应该使用方法,这样您就可以对它们做一些事情。但是,如果您需要在 wwwroot 中生成指向您的文件的链接并在您的 View 中使用它们,您有几个选择:
IUrlHelper
将公共(public) url 解析为 wwwroot 内的文件,其中 "~/"
是 wwwroot 文件夹。然后在需要时使用它,例如 href:@Url.Content("~/images/textfile.txt")
"~/"
开头的 href 属性直接在 razor View 中创建 anchor . (你甚至在那里得到智能感知)<a href="~/images/textfile.txt">Get file from wwwroot</a>
关于asp.net-core - 将绝对文件路径转换为相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38786781/