如何使用 Markdown 语法链接到任何本地文件?

问题描述 投票:0回答:10

我有一个包含多个链接的本地 Markdown 文件,我希望该链接指向本地文件,例如 pdf。

我使用以下语法:

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

但是当我在 Firefox 页面中打开 Markdown 文件并单击链接时,没有任何反应。

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

file hyperlink markdown
10个回答
190
投票

所有答案都不适合我。但受到 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

46
投票

在搞乱了@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
中进行了测试并工作,

注意:相对于打开的项目路径的绝对路径和相对路径在编辑器中有效,但在 Markdown 预览模式下无效!


41
投票

如何打开渲染的 Markdown?

如果您通过 HTTP 托管它,即通过

http://
https://
访问它,大多数现代浏览器将拒绝打开本地链接,例如与
file://
。这是一个安全功能

出于安全目的,Mozilla 应用程序会阻止远程文件到本地文件(和目录)的链接。这包括链接到硬盘驱动器上、映射网络驱动器上的文件,以及通过统一命名约定 (UNC) 路径访问的文件。这防止了许多令人不快的可能性,包括:

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

该页面上列出了一些解决方法,但我的建议是如果可以的话避免这样做。


35
投票

链接到本地文件的方式与链接到本地图像的方式相同。以下是链接到与 Markdown 源位于同一目录中的文件

start_caQtDM_7id.sh
的示例:

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

23
投票

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

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

第一个似乎更可靠


6
投票

这是一个老问题,但对我来说,它似乎仍然没有对OP的问题有完整的答案。根据我的经验,在使用 Firefox“Markdown Viewer”插件时,所选择的关于安全性可能是问题的答案实际上通常“不是”问题。另外,OP 似乎使用的是 MS-Windows,因此还存在指定不同驱动器的额外问题。 因此,这里是 Windows 上的“Markdown Viewer”插件(以及我见过的其他 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正在寻找的。
请注意,这也可以用于显示目录而不是文件。

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


5
投票
谢谢漂流0pine!

第一个解决方案,它有效!

[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)



1
投票
[Click here](MY-FILE.md)

就可以了。


否则,可以从项目的根目录创建路径。因此,如果整个project/git-repo根目录名为“my-app”,并且想要指向my-app/client/read-me.md,那么请尝试

[My hyperlink](/client/read-me.md)


至少可以在 Chrome 上使用。


1
投票

<a href="file:///path/to/local/file.pdf">link</a>

这重定向得很好。


0
投票

要亲自测试这一点,请创建一个类似 *[Typora](.\Typora.exe.lnk)* 的链接,并将实际的 Windows 快捷方式与名为 Typora.exe.lnk 的 Markdown 文件 (TestMe.MD) 一起放入该文件夹中。

然后在 Typora 中打开 MD 文件并按住 Ctrl 键单击链接,它应该执行您在该快捷方式中链接的任何内容,在您在该快捷方式中指定的任何文件夹中打开(或在本地,如果您将其留空)。在这种情况下,这当然是 Typora 的另一个实例。 :)

我将其用于说明文档,其中包含可执行文件和脚本的链接,以遵循某些复杂到足以忘记的记录程序。当然,最棒的一点是您可以在链接文件中包含参数,甚至可以编写脚本来与阅读文档的人进行交互。

世界变成你的牡蛎。 :)

© www.soinside.com 2019 - 2024. All rights reserved.