Comment créer un lien vers n'importe quel fichier local avec la syntaxe Markdown?

89

J'ai un fichier de démarque local contenant plusieurs liens et je veux que les liens soient dirigés vers un fichier local comme pdf.

J'utilise la syntaxe suivante:

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

Mais lorsque j'ouvre mon fichier markdown dans une page Firefox et que je clique sur le lien, rien ne se passe.

Qu'ai-je manqué exactement? Est-il possible d'ouvrir un fichier local?

Alexis Le Provost
la source
En outre répondu ici, semble être une double question ?: stackoverflow.com/a/58317580/5890679
Akul Aggarwal
Vim met bien en évidence le démarquage, y compris les liens Web cliquables. Hélas, les liens locaux , bien que mis en évidence, ne s'ouvriront pas.
user2023370

Réponses:

32

Comment ouvrez-vous le Markdown rendu?

Si vous l'hébergez via HTTP, c'est-à-dire que vous y accédez via http://ou https://, la plupart des navigateurs modernes refuseront d'ouvrir des liens locaux, par exemple avec file://. Ceci est une fonction de sécurité :

Pour des raisons de sécurité, les applications Mozilla bloquent les liens vers les fichiers locaux (et répertoires) à partir des fichiers distants. Cela inclut la liaison vers des fichiers sur votre disque dur, sur des lecteurs réseau mappés et accessibles via des chemins UNC ( Uniform Naming Convention ). Cela évite un certain nombre de possibilités désagréables, notamment:

  • Permettre aux sites de détecter votre système d'exploitation en vérifiant les chemins d'installation par défaut
  • Permettre aux sites d'exploiter les vulnérabilités du système (par exemple, C:\con\condans Windows 95/98)
  • Permettre aux sites de détecter les préférences du navigateur ou de lire des données sensibles

Il existe des solutions de contournement répertoriées sur cette page, mais ma recommandation est d'éviter de le faire si vous le pouvez.

Chris
la source
1
Comme je l'ai dit, j'ouvre mon fichier markdown avec Mozilla Firefox 40.0.3 avec le plug-in 'Markdown Viewer'.
Alexis Le Provost
Ah, vous n'avez pas mentionné ce plug-in avant ;-) Je l'ai essayé avec l'export HTML (ce que je supposais que "page Firefox" signifiait) de MarkdownPad. Veuillez consulter les canaux d'aide / d'assistance du plug-in.
Katrin Leinweber
80

Aucune des réponses n'a fonctionné pour moi. Mais inspiré par la réponse de BarryPye, j'ai découvert que cela fonctionne avec des chemins relatifs!

# 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
la source
1
Commencer un chemin d'url avec "./" implique de chercher dans le répertoire local, alors que commencer par "/" implique "chercher dans le répertoire de base". Il s'agit d'une convention Linux largement répandue. Je suppose que vous n'avez peut-être pas le répertoire de base complet?
HoldOffHunger
5
En quoi est-ce différent de la réponse de @ BarryPye?
StephenBoesch
@javadba Le point d'exclamation (!) dans la réponse de BarryPye rend le fichier sous forme d'image. La question fait référence à un lien vers un autre fichier. (Je sais, lente, lente, réponse à votre question, mais je pensais que d'autres voudraient peut-être connaître la réponse.)
RichTBreak
Il est important de ne pas
laisser d'
20

Vous créez un lien vers un fichier local de la même manière que vous créez un lien vers des images locales. Voici un exemple de lien vers un fichier start_caQtDM_7id.shdans le même répertoire que la source de démarquage:

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh) 
BarryPye
la source
Ce "!" est important! Merci!
Yuriy Kulikov
Cela fait partie de la syntaxe de démarque de Github pour rendre une image, voir "Images" sous guides.github.com/features/mastering-markdown
BarryPye
13

Après avoir déconné avec la réponse @ BringBackCommodore64, je l'ai compris

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

Tous ont été testés Visual Studio Codeet fonctionnent,

Remarque : le chemin absolu fonctionne dans l'éditeur mais ne fonctionne pas en mode aperçu de démarquage!

Ali80
la source
votre note est très importante!
Thinh NV
7

Si vous avez des espaces dans le nom de fichier, essayez ceci:

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

Le premier semble plus fiable

Zikoat
la source
Il n'est pas clair quel est votre problème et ce que vous demandez. La question est-elle: quel nom de fichier est le plus fiable?
Seymour le
1

Merci drifty0pine!

La première solution, ça marche!

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

mais j'avais besoin d'en mettre plus ../jusqu'au dossier où se trouvait mon fichier, comme ceci:

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

Si le fichier est dans le même répertoire que celui où se trouve le .md, le simple fait de le mettre [Click here](MY-FILE.md)devrait fonctionner.

Sinon, peut créer un chemin à partir du répertoire racine du projet. Donc, si tout le répertoire racine du projet / git-repo s'appelle «my-app» et que l'on veut pointer vers my-app / client / read-me.md, alors essayez [My hyperlink](/client/read-me.md).

Au moins fonctionne à partir de Chrome.

Akul Aggarwal
la source
0

C'est une vieille question, mais pour moi, elle ne semble toujours pas avoir de réponse complète à la question du PO. La réponse choisie au sujet de la sécurité étant le problème possible n'est en fait souvent pas le problème lors de l'utilisation du plug-in Firefox 'Markdown Viewer' dans mon expérience. En outre, l'OP semble utiliser MS-Windows, il y a donc le problème supplémentaire de spécifier différents lecteurs.

Donc, voici une réponse un peu plus complète mais simple pour le plug-in 'Markdown Viewer' sur Windows (et d'autres moteurs de rendu Markdown que j'ai vus): entrez simplement le chemin local comme vous le feriez normalement, et s'il s'agit d'un chemin absolu assurez-vous de le démarrer avec une barre oblique. Donc:

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

Ce dernier était probablement ce que le PO recherchait compte tenu de son exemple. Notez que cela peut également être utilisé pour afficher des répertoires plutôt que des fichiers.

Bien que tard, j'espère que cela aide!

drifty0pine
la source