¿Cómo vincular a cualquier archivo local con sintaxis de rebajas?

89

Tengo un archivo de rebajas local que contiene varios enlaces y quiero que los enlaces se dirijan al archivo local como pdf.

Utilizo la siguiente sintaxis:

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

Pero cuando abro mi archivo de rebajas en una página de Firefox y hago clic en el enlace, no pasa nada.

¿Qué me he perdido exactamente? ¿Es posible abrir un archivo local?

Alexis Le Provost
fuente
También respondida aquí, ¿parece ser una pregunta duplicada ?: stackoverflow.com/a/58317580/5890679
Akul Aggarwal
Vim destaca las rebajas muy bien, incluidos los enlaces web en los que se puede hacer clic. Por desgracia, los enlaces locales , aunque resaltados, no se abrirán.
user2023370

Respuestas:

32

¿Cómo está abriendo el Markdown renderizado?

Si lo aloja a través de HTTP, es decir, accede a él a través de http://o https://, la mayoría de los navegadores modernos se negarán a abrir enlaces locales, por ejemplo, con file://. Esta es una característica de seguridad :

Por motivos de seguridad, las aplicaciones de Mozilla bloquean los enlaces a archivos (y directorios) locales desde archivos remotos. Esto incluye la vinculación a archivos en su disco duro, en unidades de red mapeadas y accesibles a través de rutas UNC ( Uniform Naming Convention ). Esto evita una serie de posibilidades desagradables, que incluyen:

  • Permitir que los sitios detecten su sistema operativo al verificar las rutas de instalación predeterminadas
  • Permitir que los sitios aprovechen las vulnerabilidades del sistema (por ejemplo, C:\con\conen Windows 95/98)
  • Permitir que los sitios detecten las preferencias del navegador o lean datos confidenciales

Hay algunas soluciones en esa página, pero mi recomendación es evitar hacer esto si puede.

Chris
fuente
1
Como dije, abro mi archivo de rebajas con Mozilla Firefox 40.0.3 con el complemento 'Visor de rebajas'.
Alexis Le Provost
Ah, no mencionaste ese complemento antes ;-) Lo probé con la exportación HTML (lo que supuse que significaba "página de Firefox") de MarkdownPad. Consulte los canales de ayuda / soporte del complemento.
Katrin Leinweber
80

Ninguna de las respuestas funcionó para mí. Pero inspirado en la respuesta de BarryPye, descubrí que funciona cuando se usan rutas relativas.

# 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
fuente
1
Comenzar una ruta de URL con "./" implica buscar en el directorio local, mientras que comenzar con "/" implica "buscar en el directorio base". Esta es una convención de Linux muy extendida. Sospecho que tal vez no tenías el directorio base completo abajo.
HoldOffHunger
5
¿En qué se diferencia esto de la respuesta de @ BarryPye?
StephenBoesch
@javadba El signo de exclamación (!) en la respuesta de BarryPye representa el archivo como una imagen. La pregunta se refiere a un enlace a otro archivo. (Lo sé, lenta, lenta, la respuesta a su pregunta, pero pensé que otros podrían querer saber la respuesta.)
RichTBreak
Es importante no dejar un espacio entre los caracteres] y (
jbustamovej
20

Se vincula a un archivo local de la misma manera que se vincula a imágenes locales. Aquí hay un ejemplo para vincular al archivo start_caQtDM_7id.shen el mismo directorio que la fuente de rebajas:

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh) 
BarryPye
fuente
Esta "!" ¡es importante! ¡Gracias!
Yuriy Kulikov
Es parte de la sintaxis de rebajas con sabor a Github para renderizar una imagen, consulte "Imágenes" en guides.github.com/features/mastering-markdown
BarryPye
13

Después de jugar con la respuesta de @ BringBackCommodore64, lo descubrí

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

Todos ellos probados Visual Studio Codey funcionando,

Nota : ¡La ruta absoluta funciona en el editor, pero no en el modo de vista previa de rebajas!

Ali80
fuente
¡Tu nota es muy importante!
Thinh NV
7

Si tiene espacios en el nombre del archivo, pruebe estos:

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

El primero parece más confiable

Zikoat
fuente
No está claro cuál es su problema y qué está preguntando. La pregunta es: ¿cuál de los nombres de archivo es más confiable?
Seymour
1

¡Gracias drifty0pine!

La primera solución, ¡funciona!

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

pero tenía que poner más ../hasta la carpeta donde estaba mi archivo, así:

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

Si el archivo está en el mismo directorio que donde está el .md, simplemente poner [Click here](MY-FILE.md)debería funcionar.

De lo contrario, puede crear una ruta desde el directorio raíz del proyecto. Entonces, si todo el directorio raíz del proyecto / git-repo se llama 'my-app', y uno quiere apuntar a my-app / client / read-me.md, intente[My hyperlink](/client/read-me.md) .

Al menos funciona desde Chrome.

Akul Aggarwal
fuente
0

Esta es una pregunta antigua, pero para mí todavía no parece tener una respuesta completa a la pregunta del OP. La respuesta elegida acerca de que la seguridad es el posible problema a menudo no es mi experiencia, la el problema cuando se usa el complemento 'Markdown Viewer' de Firefox. Además, el OP parece estar usando MS-Windows, por lo que existe el problema adicional de especificar diferentes unidades.

Entonces, aquí hay una respuesta un poco más completa pero simple para el complemento 'Markdown Viewer' en Windows (y otros renderizadores de Markdown que he visto): simplemente ingrese la ruta local como lo haría normalmente, y si es una ruta absoluta asegúrese de comenzar con una barra. Entonces:

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

Ese último era probablemente lo que buscaba el OP dado su ejemplo. Tenga en cuenta que esto también se puede utilizar para mostrar directorios en lugar de archivos.

Aunque sea tarde, ¡espero que esto ayude!

drifty0pine
fuente