Як зв’язати будь-який локальний файл із синтаксисом розмітки?


89

У мене є файл локальної націнки, що містить кілька посилань, і я хочу, щоб ці посилання переходили до локального файлу, наприклад pdf.

Я використовую такий синтаксис:

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

Але коли я відкриваю файл націнки на сторінці Firefox і натискаю на посилання, нічого не відбувається.

Що саме я пропустив? Чи можна відкрити локальний файл?


Також тут відповіли, здається, дублікат запитання ?: stackoverflow.com/a/58317580/5890679
Akul Aggarwal

Vim красиво виділяє націнку, включаючи веб-посилання, які можна натиснути. На жаль, місцеві посилання, хоча і виділені, не відкриватимуться.
user2023370

Відповіді:


32

Як ви відкриваєте наданий Markdown?

Якщо ви розміщуєте його через HTTP, тобто ви отримуєте доступ до нього через http://або https://, більшість сучасних браузерів відмовляться відкривати локальні посилання, наприклад file://. Це функція безпеки :

З міркувань безпеки програми Mozilla блокують посилання на локальні файли (та каталоги) із віддалених файлів. Сюди входить посилання на файли на вашому жорсткому диску, на зіставлених мережевих дисках і доступні через шляхи Єдиної конвенції про імена (UNC). Це запобігає низці неприємних можливостей, зокрема:

  • Дозволити сайтам виявляти вашу операційну систему, перевіряючи шляхи встановлення за замовчуванням
  • Дозвіл сайтам використовувати вразливості системи (наприклад, C:\con\conу Windows 95/98)
  • Дозволити сайтам виявляти налаштування браузера або читати конфіденційні дані

На цій сторінці є кілька обхідних шляхів, але я рекомендую уникати цього, якщо можете.


1
Як я вже говорив, я відкриваю свій файл знижки за допомогою Mozilla Firefox 40.0.3 за допомогою плагіна 'Markdown Viewer'.
Alexis Le Provost

Ах, ви раніше не згадували про цей плагін ;-) Я спробував його з експортом HTML (що, на мою думку, означало "сторінка Firefox") MarkdownPad. Будь ласка, перевірте канали довідки / підтримки плагіна.
Катрін Лейнвебер

80

Жодна з відповідей у ​​мене не спрацювала. Але надихнувшись відповіддю 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

1
Початок шляху URL-адреси з "./" передбачає пошук у локальній директорії, тоді як починаючи з "/" означає "погляд у базовій директорії." Це широко поширена конвенція Linux. Підозрюю, можливо, у вас не було повного базового каталогу?
HoldOffHunger

5
Чим це відрізняється від відповіді @ BarryPye?
StephenBoesch

@javadba Оклик (!) у відповіді BarryPye робить файл у вигляді зображення. Питання стосується посилання на інший файл. (Я знаю, повільна, повільна, відповідь на ваше запитання, але я думав, що інші можуть знати відповідь.)
RichTBreak

Важливо не мати пробілу між символами] та (.
jbustamovej,

20

Ви посилаєтесь на локальний файл так само, як і на локальні зображення. Ось приклад посилання на файл start_caQtDM_7id.shу тому ж каталозі, що і джерело націнки:

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

Це "!" важливо! Дякую!
Юрій Куликов,

Це частина синтаксису ароматизованої розмітки Github для відтворення зображення, див. "Зображення" під guides.github.com/features/mastering-markdown
BarryPye

13

Попсувавшись із відповіддю @ BringBackCommodore64, я це зрозумів

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

Усі вони перевірені Visual Studio Codeта працюють,

Примітка : Абсолютний шлях працює в редакторі, але не працює в режимі попереднього перегляду націнки!


Ваша Примітка дуже важлива!
Thinh NV

7

Якщо у назві файлу є пробіли, спробуйте:

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

Перший здається надійнішим


Незрозуміло, в чому ваша проблема і про що ви запитуєте. Питання: яке з назв файлів є надійнішим?
Сеймур,

1

Дякую drifty0pine!

Перше рішення, воно працює!

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

але мені потрібно було додати більше ../до папки, де був мій файл, наприклад:

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

0

Якщо файл знаходиться в тому ж каталозі, що і той, де знаходиться .md, тоді просто введення [Click here](MY-FILE.md)повинно працювати.

В іншому випадку можна створити шлях із кореневого каталогу проекту. Отже, якщо весь кореневий каталог project / git-repo називається 'my-app', і хочеться вказати на my-app / client / read-me.md, тоді спробуйте [My hyperlink](/client/read-me.md).

Принаймні працює з Chrome.


0

Це давнє запитання, але для мене воно все ще не має повної відповіді на питання ОП. Обрана відповідь про те, що безпека є можливою проблемою, насправді часто не є проблемою при використанні плагіна Firefox 'Markdown Viewer' на моєму досвіді. Крім того, OP, схоже, використовує MS-Windows, тому є додаткова проблема із зазначенням різних дисків.

Отже, ось трохи повніша, але проста відповідь на плагін «Markdown Viewer» у Windows (та інших візуалізаторах 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)

Цей останній, мабуть, і шукав ОП, беручи до уваги їхній приклад. Зауважте, це також може використовуватися для відображення каталогів, а не файлів.

Хоч і пізно, сподіваюся, це допоможе!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.