Jak połączyć się z dowolnym plikiem lokalnym ze składnią markdown?

89

Mam lokalny plik markdown zawierający kilka linków i chcę, aby linki prowadziły do ​​lokalnego pliku, takiego jak pdf.

Używam następującej składni:

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

Ale kiedy otwieram plik Markdown na stronie przeglądarki Firefox i klikam łącze, nic się nie dzieje.

Co dokładnie przegapiłem? Czy można otworzyć plik lokalny?

Alexis Le Provost
źródło
Tutaj również odpowiedziałem, wydaje się, że pytanie jest zduplikowane ?: stackoverflow.com/a/58317580/5890679
Akul Aggarwal
Vim ładnie podkreśla przeceny, w tym klikalne linki internetowe. Niestety, linki lokalne , choć podświetlone, nie otwierają się.
user2023370

Odpowiedzi:

32

Jak otwierasz wyrenderowany Markdown?

Jeśli hostujesz go przez HTTP, tj. Uzyskujesz do niego dostęp przez http://lub https://, większość nowoczesnych przeglądarek odmówi otwierania linków lokalnych, np file://. Z. To jest funkcja bezpieczeństwa :

Ze względów bezpieczeństwa aplikacje Mozilli blokują łącza do lokalnych plików (i katalogów) z plików zdalnych. Obejmuje to tworzenie łączy do plików na dysku twardym, zmapowanych dysków sieciowych i dostępnych za pośrednictwem ścieżek Uniform Naming Convention (UNC). To zapobiega szereg nieprzyjemnych możliwości, w tym:

  • Zezwalanie witrynom na wykrywanie systemu operacyjnego przez sprawdzenie domyślnych ścieżek instalacji
  • Zezwalanie witrynom na wykorzystywanie luk w zabezpieczeniach systemu (np. C:\con\conW systemie Windows 95/98)
  • Zezwalanie witrynom na wykrywanie preferencji przeglądarki lub odczytywanie poufnych danych

Na tej stronie wymieniono kilka obejść, ale radzę tego unikać, jeśli możesz.

Chris
źródło
1
Jak powiedziałem, otwieram swój plik markdown w przeglądarce Mozilla Firefox 40.0.3 z wtyczką „Markdown Viewer”.
Alexis Le Provost
Ach, nie wspomniałeś wcześniej o tej wtyczce ;-) Wypróbowałem ją z eksportem HTML (co, jak przypuszczałem, oznaczało „strona Firefox”) MarkdownPada. Sprawdź kanały pomocy / wsparcia wtyczki.
Katrin Leinweber
80

Żadna z odpowiedzi nie pomogła. Ale zainspirowany odpowiedzią BarryPye, odkryłem, że działa, gdy używam ścieżek względnych!

# 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
źródło
1
Rozpoczynanie ścieżki adresu URL od „./” implikuje szukanie w katalogu lokalnym, natomiast rozpoczynanie od „/” implikuje „szukanie w katalogu podstawowym”. To powszechna konwencja Linuksa. Podejrzewam, że może nie masz pełnego podstawowego katalogu?
HoldOffHunger,
5
Czym to się różni od odpowiedzi @ BarryPye?
StephenBoesch
@javadba Wykrzyknik (!) w odpowiedzi BarryPye renderuje plik jako obraz. Pytanie dotyczy linku do innego pliku. (Wiem, powolna, powolna odpowiedź na twoje pytanie, ale pomyślałem, że inni mogą chcieć poznać odpowiedź.)
RichTBreak
Ważne jest, aby nie było spacji między] i (znaki.
jbustamovej
20

Łączysz się z plikiem lokalnym w taki sam sposób, jak łączysz się z lokalnymi obrazami. Oto przykład linku do pliku start_caQtDM_7id.shw tym samym katalogu, co źródło przeceny:

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh) 
BarryPye
źródło
To „!” jest ważne! Dzięki!
Yuriy Kulikov
To część Github smaku składni Markdown do renderowania obrazu, patrz „Obrazy” pod guides.github.com/features/mastering-markdown
BarryPye
13

Po zabawie z odpowiedzią @ BringBackCommodore64 zrozumiałem

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

Wszystkie sprawdzone Visual Studio Codei działające,

Uwaga : ścieżka bezwzględna działa w edytorze, ale nie działa w trybie podglądu przeceny!

Ali80
źródło
Twoja uwaga jest bardzo ważna!
Thinh NV
7

Jeśli masz spacje w nazwie pliku, wypróbuj te:

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

Pierwsza wydaje się bardziej wiarygodna

Zikoat
źródło
Nie jest jasne, jaki jest Twój problem i o co prosisz. Powstaje pytanie: która z nazw plików jest bardziej wiarygodna?
Seymour
1

Dziękuję drifty0pine!

Pierwsze rozwiązanie, to działa!

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

ale musiałem umieścić więcej, ../aż do folderu, w którym był mój plik, na przykład:

[FileToOpen](../../../../folderW/folderX/folderY/folderZ/FileToOpen.txt)
Oubiña
źródło
0

Jeśli plik znajduje się w tym samym katalogu, co ten, w którym znajduje się plik .md, po prostu wstawianie [Click here](MY-FILE.md)powinno działać.

W przeciwnym razie można utworzyć ścieżkę z katalogu głównego projektu. Więc jeśli cały katalog główny projektu / git-repo nazywa się „my-app” i chce się wskazać na my-app / client / read-me.md, spróbuj[My hyperlink](/client/read-me.md) .

Przynajmniej działa z Chrome.

Akul Aggarwal
źródło
0

To stare pytanie, ale wydaje mi się, że nadal nie ma pełnej odpowiedzi na pytanie OP. Wybrana odpowiedź, że bezpieczeństwo jest możliwym problemem, w rzeczywistości często nie jest jest problemem podczas korzystania z wtyczki Firefox „Markdown Viewer” w moim doświadczeniu. Ponadto wydaje się, że OP używa MS-Windows, więc pojawia się dodatkowy problem z określaniem różnych dysków.

Oto trochę bardziej kompletna, ale prosta odpowiedź na wtyczkę „Markdown Viewer” w systemie Windows (i innych rendererach Markdown, które widziałem): po prostu wprowadź ścieżkę lokalną tak, jak zwykle, i jeśli jest to ścieżka bezwzględna upewnij się, że zaczynasz od ukośnika. Więc:

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

Ten ostatni był prawdopodobnie tym, czego szukał PO na ich przykładzie. Zauważ, że może to być również używane do wyświetlania katalogów zamiast plików.

Chociaż późno, mam nadzieję, że to pomoże!

drifty0pine
źródło