加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 将绝对文件路径转换为相对路径

发布时间:2020-12-16 04:10:21 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试从我的ASP.NET核心应用程序的wwwroot文件夹中的images文件夹中提供文件,我已经在Startup类中启用了静态文件访问. HostingEnvironment服务为我提供了一个WebRootPath属性,它为我提供了wwwroot文件夹的绝对路径,但使用此路径在浏览器的控制台中给出
我正在尝试从我的ASP.NET核心应用程序的wwwroot文件夹中的images文件夹中提供文件,我已经在Startup类中启用了静态文件访问.

HostingEnvironment服务为我提供了一个WebRootPath属性,它为我提供了wwwroot文件夹的绝对路径,但使用此路径在浏览器的控制台中给出了“不允许加载本地资源”错误.

如果我使用localhost从我的浏览器访问该文件,我可以获取图像文件的相对路径,因此没有关于授权的问题.

我现在需要的是能够将该绝对路径转换为我的Web服务器的相对路径.

解决方法

鉴于您遇到的错误,在我看来,您正在尝试在视图中使用_env.WebRootPath“/images/textfile.txt”,例如作为href属性.

>这样做最终会在浏览器中尝试从您的页面请求一个类似于file:/// C:/Users/PathToYourSite/wwwroot/images/textfile.txt的网址,该网址以您遇到的错误结束.您可以阅读有关该on this answer的更多信息,但在moder Chrome等浏览器中,默认情况下会禁用从http协议到文件协议的请求.

因此,当您希望将文件内容作为服务器端逻辑的一部分读取时,应使用IHostingEnvironment方法,以便您可以对它们执行某些操作.

但是,如果您需要在wwwroot中生成指向文件的链接并在视图中使用它们,那么您有以下几种选择:

>使用IUrlHelper将公共URL解析为wwwroot中的文件,其中“?/”是wwwroot文件夹.然后在需要时使用它,就像一个href:

@Url.Content("~/images/textfile.txt")

>使用以“?/”开头的href属性直接在剃刀视图中创建锚点. (你甚至在那里获得intellisense)

<a href="~/images/textfile.txt">Get file from wwwroot</a>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读