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?


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.


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

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) 

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!


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


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)

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.


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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.