如何链接到任何本地文件与标记语法?

我有一个本地降价文件包含几个链接,我希望这个链接头本地文件喜欢 pdf。

我使用以下语法:

[my link](file:///C:/my_file.pdf)

但是当我打开我的标记文件进入 Firefox 页面并点击链接时,什么也没有发生。

我到底错过了什么? 有可能打开本地文件吗?

214607 次浏览

你是如何打开提交的 Markdown 的?

如果你通过 HTTP 托管它,即通过 http://https://访问它,大多数现代浏览器将拒绝打开本地链接,例如使用 file://。这是 保安系统:

为了安全起见,Mozilla 应用程序阻止远程文件中指向本地文件(和目录)的链接。这包括链接到硬盘驱动器、映射网络驱动器上的文件,以及通过 制服变数命名原则(UNC)路径进行访问。这个 防止有许多令人不快的可能性,包括:

  • 允许站点通过检查默认安装路径来检测操作系统
  • 允许站点利用系统漏洞(例如,Windows95/98中的 C:\con\con)
  • 允许站点检测浏览器首选项或读取敏感数据

该页面上列出了一些变通方法,但我的建议是尽可能避免这样做。

链接到本地文件的方式与链接到本地图像的方式相同。下面是一个链接到与标记源相同目录中的文件 start_caQtDM_7id.sh的示例:

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh)

没有一个答案对我有用。但是从 BarryPye 的回答中我得到了灵感,我发现当使用相对路径时它是可行的!

# Contents from the '/media/user/README_1.md' markdown file:


Read more [here](./README_2.md) # It works!
Read more [here](file:///media/user/README_2.md) # Doesn't work
Read more [here](/media/user/README_2.md) # Doesn't work

如果该文件与。Md 是,那么只要把 [Click here](MY-FILE.md)应该工作。

否则,可以从项目的根目录创建路径。因此,如果整个项目/git-repo 根目录称为“ my-app”,并且希望指向 my-app/client/read-me。然后尝试 [My hyperlink](/client/read-me.md)

至少可以在 Chrome 上工作。

在使用了@BringBackCommodore64的回答之后,我终于弄明白了

[link](file:///d:/absolute.md)    # absolute filesystem path
[link](./relative1.md)            # relative to opened file
[link](/relativeToProject.md)     # relative to opened project

他们都在 Visual Studio Code测试中工作,

注意 : 开放项目路径的绝对值和相对值在编辑器中可以工作,但不能在降价预览模式下工作!

如果文件名中有空格,请尝试以下操作:

[file](./file%20with%20spaces.md)
[file](<./file with spaces.md>)

第一个看起来更可靠

这是一个老问题,但对我来说,它似乎仍然没有一个完整的答案,对 OP 的问题。根据我的经验,当使用 Firefox‘ Markdown Viewer’插件时,选择的关于安全性可能是问题的答案实际上通常是 没有问题。此外,OP 似乎正在使用 MS-Windows,因此还有指定不同驱动器的额外问题。

因此,这里有一个更加完整而简单的答案为’Markdown Viewer’插件在 Windows (和其他 Markdown 渲染器我见过) : 只是输入本地路径,因为你通常会,如果它是一个绝对路径,确保以一个斜杠开始。所以:

[a relative link](../../some/dir/filename.md)
[Link to file in another dir on same drive](/another/dir/filename.md)
[Link to file in another dir on a different drive](/D:/dir/filename.md)

考虑到他们的例子,最后一个可能就是 OP 所寻找的。 注意,这也可以用来显示目录而不是文件。

虽然很晚了,但我希望这能有所帮助!

谢谢你,漂浮的松树!

第一个办法,成功了!

[a relative link](../../some/dir/filename.md)
[Link to file in another dir on same drive](/another/dir/filename.md)
[Link to file in another dir on a different drive](/D:/dir/filename.md)

但是我需要放更多的 ../直到文件夹里有我的文件,像这样:

[FileToOpen](../../../../folderW/folderX/folderY/folderZ/FileToOpen.txt)