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

Ale*_*ost 59 markdown hyperlink

我有一个包含几个链接的本地markdown文件,我希望链接转到本地文件,如pdf.

我使用以下语法:

[my link](file:///C:/my_file.pdf)
Run Code Online (Sandbox Code Playgroud)

但是,当我将我的markdown文件打开到Firefox页面并点击链接时,没有任何反应.

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

Bri*_*e64 46

这些答案都不适合我.但在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
Run Code Online (Sandbox Code Playgroud)

  • 这与@BarryPye的答案有何不同? (4认同)
  • @nekovolta 返回树目录,然后导航到 PDF 所在的位置。示例:“[Book](../../docs/mybook.pdf)”。所以我用“../../”返回(假设PDF文件夹是本地MD文件下的两个文件夹),然后用“/docs/”进入其文件夹 (3认同)
  • 以“./”开头的 URL 路径意味着在本地目录中查找,而以“/”开头则意味着“在基本目录中查找”。这是一个广泛使用的 Linux 约定。我怀疑你可能没有完整的基础目录? (2认同)
  • @javadba BarryPye 的答案中的感叹号(!)将文件呈现为图像。该问题涉及到另一个文件的链接。(我知道,对你的问题的回答很慢,很慢,但我认为其他人可能想知道答案。) (2认同)
  • ] 和 ( 字符之间不要有空格,这一点很重要。 (2认同)

Chr*_*ris 25

你是如何打开渲染的Markdown的?

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

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

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

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


Ali*_*i80 17

在弄乱@BringBackCommodore64 答案后,我想通了

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

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

注意:绝对路径在编辑器中有效,但在降价预览模式下无效!

  • 您的备注非常重要! (6认同)

Bar*_*Pye 15

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

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh) 
Run Code Online (Sandbox Code Playgroud)


Zik*_*oat 14

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

[file](./file%20with%20spaces.md)
[file](<./file with spaces.md>)
Run Code Online (Sandbox Code Playgroud)

第一个似乎更可靠


小智 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)
Run Code Online (Sandbox Code Playgroud)

鉴于他们的例子,最后一个可能就是OP正在寻找的。请注意,这也可用于显示目录而不是文件。

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


小智 5

\n

谢谢你漂流0pine!

\n
\n

第一个解决方案,it\xc2\xb4s 有效!

\n
[a relative link](../../some/dir/filename.md)\n[Link to file in another dir on same drive](/another/dir/filename.md)\n[Link to file in another dir on a different drive](/D:/dir/filename.md)\n
Run Code Online (Sandbox Code Playgroud)\n

但我需要放置更多内容,../直到我的文件所在的文件夹,如下所示:

\n
[FileToOpen](../../../../folderW/folderX/folderY/folderZ/FileToOpen.txt)\n
Run Code Online (Sandbox Code Playgroud)\n