Wie kann eine Verknüpfung zu einer lokalen Datei mit Markdown-Syntax hergestellt werden?

88

Ich habe eine lokale Markdown-Datei, die mehrere Links enthält, und ich möchte, dass diese Links zu einer lokalen Datei wie pdf führen.

Ich benutze die folgende Syntax:

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

Aber wenn ich meine Markdown-Datei auf einer Firefox-Seite öffne und auf den Link klicke, passiert nichts.

Was genau habe ich vermisst? Ist es möglich, lokale Dateien zu öffnen?

Alexis Le Provost
quelle
Auch hier beantwortet, scheint eine doppelte Frage zu sein?: Stackoverflow.com/a/58317580/5890679
Akul Aggarwal
Vim hebt Markdown gut hervor, einschließlich anklickbarer Weblinks. Leider werden lokale Links, obwohl hervorgehoben, nicht geöffnet.
user2023370

Antworten:

32

Wie öffnen Sie den gerenderten Markdown?

Wenn Sie es über HTTP hosten, dh über http://oder darauf zugreifen https://, lehnen die meisten modernen Browser das Öffnen lokaler Links ab, z file://. B. mit . Dies ist ein Sicherheitsmerkmal :

Aus Sicherheitsgründen blockieren Mozilla-Anwendungen Links zu lokalen Dateien (und Verzeichnissen) aus Remotedateien. Dies umfasst das Verknüpfen mit Dateien auf Ihrer Festplatte, auf zugeordneten Netzwerklaufwerken und den Zugriff über UNC-Pfade ( Uniform Naming Convention ). Dies verhindert eine Reihe unangenehmer Möglichkeiten, darunter:

  • Ermöglichen, dass Sites Ihr Betriebssystem erkennen, indem Sie die Standardinstallationspfade überprüfen
  • Zulassen, dass Websites Systemschwachstellen ausnutzen (z. B. C:\con\conin Windows 95/98)
  • Ermöglichen, dass Websites Browsereinstellungen erkennen oder vertrauliche Daten lesen

Auf dieser Seite sind einige Problemumgehungen aufgeführt. Ich empfehle jedoch, dies zu vermeiden, wenn Sie können.

Chris
quelle
1
Wie gesagt, ich öffne meine Markdown-Datei mit Mozilla Firefox 40.0.3 mit dem Plug-In 'Markdown Viewer'.
Alexis Le Provost
Ah, du hast dieses Plug-In vorher nicht erwähnt ;-) Ich habe es mit dem HTML-Export (was ich für "Firefox-Seite" hielt) von MarkdownPad versucht. Bitte überprüfen Sie die Hilfe- / Support-Kanäle des Plug-Ins.
Katrin Leinweber
79

Keine der Antworten hat bei mir funktioniert. Aber inspiriert von BarryPyes Antwort fand ich heraus, dass es funktioniert, wenn relative Pfade verwendet werden!

# 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
BringBackCommodore64
quelle
1
Das Starten eines URL-Pfads mit "./" impliziert einen Blick in das lokale Verzeichnis, während das Starten mit "/" "einen Blick in das Basisverzeichnis" impliziert. Dies ist eine weit verbreitete Linux-Konvention. Ich vermute, vielleicht hatten Sie nicht das volle Basisverzeichnis?
HoldOffHunger
5
Wie unterscheidet sich das von der Antwort von @ BarryPye?
StephenBoesch
@javadba Das Ausrufezeichen (!) in BarryPyes Antwort rendert die Datei als Bild. Die Frage bezieht sich auf einen Link zu einer anderen Datei. (Ich weiß, langsam, langsam, Antwort auf Ihre Frage, aber ich dachte, andere möchten vielleicht die Antwort wissen.)
RichTBreak
Es ist wichtig, kein Leerzeichen zwischen den Zeichen] und (zu haben.
jbustamovej
20

Sie verlinken auf eine lokale Datei genauso wie auf lokale Bilder. Hier ist ein Beispiel für die Verknüpfung mit einer Datei start_caQtDM_7id.shim selben Verzeichnis wie die Markdown-Quelle:

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh) 
BarryPye
quelle
Dies "!" ist wichtig! Vielen Dank!
Yuriy Kulikov
Es ist Teil der Markdown-Syntax mit Github-Geschmack, ein Bild zu rendern, siehe "Bilder" unter guide.github.com/features/mastering-markdown
BarryPye
13

Nachdem ich mit @ BringBackCommodore64 herumgespielt hatte, fand ich es heraus

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

Alle von ihnen getestet Visual Studio Codeund arbeiten,

Hinweis : Der absolute Pfad funktioniert im Editor, aber nicht im Markdown-Vorschaumodus!

Ali80
quelle
Ihre Notiz ist sehr wichtig!
Thinh NV
7

Wenn der Dateiname Leerzeichen enthält, versuchen Sie Folgendes:

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

Zunächst scheint man zuverlässiger

Zikoat
quelle
Es ist nicht klar, was Ihr Problem ist und was Sie fragen. Ist die Frage: Welcher der Dateinamen ist zuverlässiger?
Seymour
1

Vielen Dank, dass Sie drifty0pine!

Die erste Lösung, es funktioniert!

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

Aber ich musste mehr ../in den Ordner legen, in dem sich meine Datei befand, wie folgt:

[FileToOpen](../../../../folderW/folderX/folderY/folderZ/FileToOpen.txt)
Oubiña
quelle
0

Wenn sich die Datei im selben Verzeichnis befindet wie die .md, [Click here](MY-FILE.md)sollte das Putten funktionieren.

Andernfalls kann ein Pfad aus dem Stammverzeichnis des Projekts erstellt werden. Wenn also das gesamte Stammverzeichnis von project / git-repo 'my-app' heißt und man auf my-app / client / read-me.md verweisen möchte, versuchen Sie es [My hyperlink](/client/read-me.md).

Funktioniert zumindest von Chrome aus.

Akul Aggarwal
quelle
0

Dies ist eine alte Frage, aber für mich scheint sie immer noch keine vollständige Antwort auf die Frage des OP zu haben. Die gewählte Antwort, dass Sicherheit das mögliche Problem ist, ist meiner Erfahrung nach oft nicht das Problem, wenn das Firefox-Plug-In "Markdown Viewer" verwendet wird. Außerdem scheint das OP MS-Windows zu verwenden, sodass das Problem der Angabe verschiedener Laufwerke hinzukommt.

Hier ist eine etwas vollständigere und dennoch einfache Antwort für das Plug-In 'Markdown Viewer' unter Windows (und anderen Markdown-Renderern, die ich gesehen habe): Geben Sie einfach den lokalen Pfad ein, wie Sie es normalerweise tun würden, und wenn es sich um einen absoluten Pfad handelt Stellen Sie sicher, dass Sie mit einem Schrägstrich beginnen. Damit:

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

Letzteres war wahrscheinlich das, wonach die OP aufgrund ihres Beispiels suchte. Beachten Sie, dass dies auch zum Anzeigen von Verzeichnissen anstelle von Dateien verwendet werden kann.

Obwohl spät, hoffe ich, dass dies hilft!

drifty0pine
quelle