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


89

我有一个包含几个链接的本地markdown文件,并且我希望该链接指向pdf等本地文件。

我使用以下语法:

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

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

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


在这里也回答了吗,似乎是一个重复的问题?:stackoverflow.com/a/58317580/5890679
Akul Aggarwal,

Vim很好地突出显示了markdown,包括可单击的Web链接。las,本地链接尽管突出显示,但不会打开。
user2023370

Answers:


32

您如何打开渲染的Markdown?

如果通过HTTP托管它,即通过http://或访问它https://,则大多数现代浏览器都会拒绝打开本地链接,例如使用file://。这是一个安全功能

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

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

该页面上列出了一些解决方法,但我建议您尽可能避免这样做。


1
如我所说,我使用插件“ Markdown Viewer”使用Mozilla Firefox 40.0.3打开markdown文件。
亚历克西斯·勒·普罗沃斯特

啊,您以前没有提到该插件;-)我用MarkdownPad的HTML导出(我认为是“ Firefox页面”的意思)进行了尝试。请检查插件的帮助/支持渠道。
Katrin Leinweber

80

没有答案对我有用。但是受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

1
以“ ./”开头的网址路径表示在本地目录中查找,而以“ /”开头的网址表示“在基本目录中查找”。这是一种普遍的Linux约定。我怀疑您可能没有完整的基本目录吗?
HoldOffHunger

5
这与@BarryPye的答案有何不同?
StephenBoesch

@javadba BarryPye答案中的感叹号(!)将文件呈现为图像。问题是指向另一个文件的链接。(我知道,对您的问题的回答很慢,但我想其他人可能想知道答案。)
RichTBreak

。不是有间]和(字符的空间,这一点很重要
jbustamovej


13

在弄乱@ 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预览模式下不起作用!


您的备注非常重要!
Thinh NV

7

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

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

第一个似乎更可靠


目前尚不清楚您的问题是什么,您在问什么。问题是:哪个文件名更可靠?
西摩

1

谢谢drift0pine!

第一个解决方案,行得通!

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

0

如果文件与.md所在的目录位于同一目录中,则只需放置即可[Click here](MY-FILE.md)

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

至少可以在Chrome浏览器上使用。


0

这是一个古老的问题,但对我而言,它似乎仍无法完全解决OP的问题。在我的经验中,使用Firefox“ Markdown Viewer”插件时,选择的将安全问题作为可能的问题的答案实际上通常不是问题。另外,OP似乎正在使用MS-Windows,因此存在指定不同驱动器的附加问题。

因此,对于Windows(以及我见过的其他Markdown渲染器)上的“ Markdown Viewer”插件,这里有一个更完整但更简单的答案:只需像往常一样输入本地路径,如果它是绝对路径确保以斜杠开头。所以:

[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所要寻找的。注意,这也可以用于显示目录而不是文件。

虽然晚了,但希望对您有所帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.