Bagaimana menautkan ke file lokal apa pun dengan sintaks penurunan harga?

94

Saya memiliki file penurunan harga lokal yang berisi beberapa tautan dan saya ingin tautan itu menuju ke file lokal seperti pdf.

Saya menggunakan sintaks berikut:

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

Tetapi ketika saya membuka file penurunan harga saya ke halaman Firefox dan mengklik tautannya, tidak ada yang terjadi.

Apa yang sebenarnya telah saya lewatkan? Apakah mungkin untuk membuka file lokal?

Alexis Le Provost
sumber
Juga dijawab di sini, sepertinya pertanyaan duplikat ?: stackoverflow.com/a/58317580/5890679
Akul Aggarwal
Vim menyoroti penurunan harga dengan baik, termasuk tautan web yang dapat diklik. Sayangnya tautan lokal , meskipun disorot, tidak akan terbuka.
pengguna2023370

Jawaban:

32

Bagaimana Anda membuka penurunan harga yang diberikan?

Jika Anda menghostingnya melalui HTTP, yaitu Anda mengaksesnya melalui http://atau https://, sebagian besar browser modern akan menolak untuk membuka tautan lokal, misalnya dengan file://. Ini adalah fitur keamanan :

Untuk tujuan keamanan, aplikasi Mozilla memblokir tautan ke file lokal (dan direktori) dari file jarak jauh. Ini termasuk menautkan ke file di hard drive Anda, di drive jaringan yang dipetakan, dan dapat diakses melalui jalur Uniform Naming Convention (UNC). Ini mencegah sejumlah kemungkinan yang tidak menyenangkan, termasuk:

  • Mengizinkan situs mendeteksi sistem operasi Anda dengan memeriksa jalur penginstalan default
  • Mengizinkan situs mengeksploitasi kerentanan sistem (mis., C:\con\conDi Windows 95/98)
  • Mengizinkan situs mendeteksi preferensi browser atau membaca data sensitif

Ada beberapa solusi yang tercantum di halaman itu, tetapi rekomendasi saya adalah menghindari melakukan ini jika Anda bisa.

Chris
sumber
1
Seperti yang saya katakan, saya membuka file penurunan harga saya dengan Mozilla Firefox 40.0.3 dengan plugin 'Markdown Viewer'.
Alexis Le Provost
Ah, Anda tidak menyebutkan plug-in itu sebelumnya ;-) Saya mencobanya dengan ekspor HTML (yang saya anggap berarti "halaman Firefox") dari MarkdownPad. Silakan periksa saluran bantuan / dukungan plugin.
Katrin Leinweber
88

Tidak ada jawaban yang berhasil untuk saya. Tapi terinspirasi dalam jawaban BarryPye, saya menemukan itu berhasil saat menggunakan jalur relatif!

# 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
sumber
1
Memulai jalur url dengan "./" menyiratkan look in local dir, sedangkan memulai dengan "/" berarti "look in base dir." Ini adalah konvensi Linux yang tersebar luas. Saya menduga mungkin Anda tidak memiliki direktori basis penuh?
HoldOffHunger
5
Apa bedanya dengan jawaban @ BarryPye?
StephenBoesch
@javadba Tanda seru (!) dalam jawaban BarryPye menjadikan file sebagai gambar. Pertanyaan tersebut mengacu pada tautan ke file lain. (Saya tahu, lambat, lambat, respons atas pertanyaan Anda tetapi saya pikir orang lain mungkin ingin mengetahui jawabannya.)
RichTBreak
Penting untuk tidak memiliki spasi di antara karakter] dan (.
jbustamovej
21

Anda menautkan ke file lokal dengan cara yang sama Anda menautkan ke gambar lokal. Berikut adalah contoh untuk menautkan ke file start_caQtDM_7id.shdi direktori yang sama dengan sumber penurunan harga:

![start_caQtDM_7id.sh](./start_caQtDM_7id.sh) 
BarryPye
sumber
Ini "!" penting! Terima kasih!
Yuriy Kulikov
Ini adalah bagian dari sintaks markdown rasa Github untuk membuat gambar, lihat "Gambar" di bawah panduan.github.com/features/mastering-markdown
BarryPye
13

Setelah bermain-main dengan jawaban @ BringBackCommodore64, saya menemukan jawabannya

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

Semuanya diuji Visual Studio Codedan berfungsi,

Catatan : Jalur absolut berfungsi di editor tetapi tidak berfungsi dalam mode pratinjau penurunan harga!

Ali80
sumber
Catatan Anda sangat penting!
Thinh NV
8

Jika Anda memiliki spasi dalam nama file, coba ini:

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

Yang pertama sepertinya lebih bisa diandalkan

Zikoat
sumber
Tidak jelas apa masalah Anda dan apa yang Anda tanyakan. Apakah pertanyaannya: nama file mana yang lebih dapat diandalkan?
Seymour
2

Terima kasih drifty0pine!

Solusi pertama, berhasil!

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

tetapi saya harus meletakkan lebih banyak ../sampai folder tempat file saya, seperti ini:

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

Jika file berada di direktori yang sama dengan tempat .md berada, maka meletakkannya saja sudah [Click here](MY-FILE.md)berfungsi.

Jika tidak, dapat membuat jalur dari direktori root proyek. Jadi, jika seluruh direktori root project / git-repo disebut 'aplikasi-saya', dan seseorang ingin menunjuk ke aplikasi-saya / klien / read-me.md, maka coba [My hyperlink](/client/read-me.md).

Setidaknya bekerja dari Chrome.

Akul Aggarwal
sumber
0

Ini pertanyaan lama, tapi bagi saya sepertinya masih belum ada jawaban lengkap untuk pertanyaan OP. Jawaban yang dipilih tentang keamanan menjadi masalah yang mungkin sebenarnya seringkali bukan masalah saat menggunakan plug-in Firefox 'Markdown Viewer' dalam pengalaman saya. Selain itu, OP tampaknya menggunakan MS-Windows, jadi ada masalah tambahan untuk menentukan drive yang berbeda.

Jadi, berikut adalah jawaban yang sedikit lebih lengkap namun sederhana untuk plugin 'Markdown Viewer' di Windows (dan penyaji penurunan harga lainnya yang pernah saya lihat): cukup masukkan jalur lokal seperti biasa, dan jika itu adalah jalur absolut pastikan untuk memulainya dengan garis miring. Begitu:

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

Yang terakhir itu mungkin yang dicari OP karena memberi contoh. Perhatikan ini juga dapat digunakan untuk menampilkan direktori daripada file.

Meskipun terlambat, saya harap ini membantu!

drifty0pine.dll
sumber