Come collegarsi a qualsiasi file locale con sintassi markdown?


94

Ho un file markdown locale contenente diversi collegamenti e voglio che i collegamenti si dirigano verso un file locale come pdf.

Uso la seguente sintassi:

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

Ma quando apro il mio file markdown in una pagina di Firefox e faccio clic sul collegamento, non succede nulla.

Cosa mi sono perso esattamente? È possibile aprire un file locale?


Risposte anche qui, sembra essere una domanda duplicata ? :
stackoverflow.com/a/58317580/5890679

Vim evidenzia bene il markdown, inclusi i link web cliccabili. Purtroppo i collegamenti locali , sebbene evidenziati, non si apriranno.
user2023370

Risposte:


32

Come stai aprendo il Markdown renderizzato?

Se lo si ospita su HTTP, ovvero si accede tramite http://o https://, la maggior parte dei browser moderni rifiuterà di aprire collegamenti locali, ad esempio con file://. Questa è una funzione di sicurezza :

Per motivi di sicurezza, le applicazioni Mozilla bloccano i collegamenti a file locali (e directory) da file remoti. Ciò include il collegamento ai file sul disco rigido, sulle unità di rete mappate e accessibili tramite percorsi UNC ( Uniform Naming Convention ). Ciò impedisce una serie di spiacevoli possibilità, tra cui:

  • Consentire ai siti di rilevare il tuo sistema operativo controllando i percorsi di installazione predefiniti
  • Consentire ai siti di sfruttare le vulnerabilità del sistema (ad esempio, C:\con\conin Windows 95/98)
  • Consentire ai siti di rilevare le preferenze del browser o leggere dati sensibili

Ci sono alcune soluzioni alternative elencate in quella pagina, ma il mio consiglio è di evitare di farlo se puoi.


1
Come ho detto, apro il mio file markdown con Mozilla Firefox 40.0.3 con il plug-in "Markdown Viewer".
Alexis Le Provost

Ah, non hai mai menzionato quel plug-in prima ;-) L'ho provato con l'esportazione HTML (quello che immaginavo volesse dire "Pagina Firefox") di MarkdownPad. Controlla i canali di aiuto / supporto del plug-in.
Katrin Leinweber

88

Nessuna delle risposte ha funzionato per me. Ma ispirato dalla risposta di BarryPye ho scoperto che funziona quando si utilizzano percorsi relativi!

# 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
Iniziare un percorso URL con "./" implica guardare nella directory locale, mentre iniziare con "/" implica "cercare nella directory base". Questa è una convenzione Linux diffusa. Sospetto che forse non avevi la directory di base completa?
HoldOffHunger

5
In che modo è diverso dalla risposta di @ BarryPye?
StephenBoesch

@javadba Il punto esclamativo (!) nella risposta di BarryPye rende il file come un'immagine. La domanda si riferisce a un collegamento a un altro file. (Conosco la risposta, lenta, lenta, alla tua domanda, ma ho pensato che altri potrebbero voler conoscere la risposta.)
RichTBreak

È importante non avere uno spazio tra i caratteri] e (
jbustamovej

21

Ci si collega a un file locale nello stesso modo in cui ci si collega alle immagini locali. Ecco un esempio per collegarsi a un file start_caQtDM_7id.shnella stessa directory dell'origine del markdown:

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

Questo "!" è importante! Grazie!
Yuriy Kulikov il

Il rendering di un'immagine fa parte della sintassi del markdown aromatizzata a Github, vedere "Immagini" in guides.github.com/features/mastering-markdown
BarryPye

13

Dopo aver scherzato con la risposta di @ BringBackCustomore64, l'ho capito

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

Tutti testati Visual Studio Codee funzionanti,

Nota : il percorso assoluto funziona nell'editor ma non nella modalità di anteprima markdown!


la tua nota è molto importante!
Thinh NV

8

Se hai spazi nel nome del file, prova questi:

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

Il primo sembra più affidabile


Non è chiaro quale sia il tuo problema e cosa chiedi. La domanda è: quale nome del file è più affidabile?
Seymour

2

Grazie drifty0pine!

La prima soluzione, funziona!

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

ma avevo bisogno di metterne altro ../fino alla cartella dove si trovava il mio file, in questo modo:

[FileToOpen](../../../../folderW/folderX/folderY/folderZ/FileToOpen.txt)

0

Se il file si trova nella stessa directory di quella in cui si trova .md, il solo inserimento [Click here](MY-FILE.md)dovrebbe funzionare.

Altrimenti, può creare un percorso dalla directory principale del progetto. Quindi, se l'intera directory root del progetto / git-repo si chiama 'mia-app' e si vuole puntare a mia-app / client / read-me.md, allora prova [My hyperlink](/client/read-me.md).

Almeno funziona da Chrome.


0

Questa è una vecchia domanda, ma a me ancora non sembra avere una risposta completa alla domanda dell'OP. La risposta scelta sulla sicurezza come possibile problema spesso non è il problema quando si utilizza il plug-in "Markdown Viewer" di Firefox nella mia esperienza. Inoltre, l'OP sembra utilizzare MS-Windows, quindi c'è il problema aggiuntivo di specificare unità diverse.

Quindi, ecco una risposta un po 'più completa ma semplice per il plug-in' Markdown Viewer 'su Windows (e altri renderer Markdown che ho visto): inserisci semplicemente il percorso locale come faresti normalmente e se si tratta di un percorso assoluto assicurati di avviarlo con una barra. Così:

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

Quest'ultimo era probabilmente ciò che l'OP stava cercando dato il loro esempio. Nota che può essere utilizzato anche per visualizzare le directory anziché i file.

Anche se in ritardo, spero che questo aiuti!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.