Làm thế nào để liên kết đến bất kỳ tệp cục bộ nào với cú pháp đánh dấu?


89

Tôi có một tệp đánh dấu cục bộ chứa một số liên kết và tôi muốn các liên kết đó hướng đến tệp cục bộ như pdf.

Tôi sử dụng cú pháp sau:

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

Nhưng khi tôi mở tệp đánh dấu của mình vào một trang Firefox và nhấp vào liên kết, không có gì xảy ra.

Chính xác thì tôi đã bỏ lỡ điều gì? Có thể mở tệp cục bộ không?


Cũng trả lời ở đây, dường như là một câu hỏi trùng lặp ?: stackoverflow.com/a/58317580/5890679
Akul Aggarwal

Vim làm nổi bật markdown một cách độc đáo, bao gồm các liên kết web có thể nhấp. Than ôi các liên kết cục bộ , mặc dù được đánh dấu, sẽ không mở.
user2023370

Câu trả lời:


32

Bạn đang mở Markdown được kết xuất như thế nào?

Nếu bạn lưu trữ nó qua HTTP, tức là bạn truy cập nó qua http://hoặc https://, hầu hết các trình duyệt hiện đại sẽ từ chối mở các liên kết cục bộ, ví dụ như với file://. Đây là một tính năng bảo mật :

Vì mục đích bảo mật, các ứng dụng Mozilla chặn các liên kết đến tệp cục bộ (và thư mục) từ các tệp từ xa. Điều này bao gồm liên kết đến các tệp trên ổ cứng của bạn, trên các ổ đĩa mạng được ánh xạ và có thể truy cập thông qua đường dẫn Quy ước đặt tên thống nhất (UNC). Điều này ngăn chặn một số khả năng khó chịu, bao gồm:

  • Cho phép các trang web phát hiện hệ điều hành của bạn bằng cách kiểm tra các đường dẫn cài đặt mặc định
  • Cho phép các trang web khai thác lỗ hổng hệ thống (ví dụ: C:\con\controng Windows 95/98)
  • Cho phép các trang web phát hiện các tùy chọn của trình duyệt hoặc đọc dữ liệu nhạy cảm

Có một số cách giải quyết được liệt kê trên trang đó, nhưng khuyến nghị của tôi là hãy tránh làm điều này nếu bạn có thể.


1
Như tôi đã nói, tôi mở tệp đánh dấu của mình bằng Mozilla Firefox 40.0.3 với trình cắm 'Markdown Viewer'.
Alexis Le Provost,

Ah, bạn đã không đề cập đến plugin đó trước đây ;-) Tôi đã thử nó với xuất HTML (những gì tôi cho rằng "trang Firefox" có nghĩa là) của MarkdownPad. Vui lòng kiểm tra các kênh trợ giúp / hỗ trợ của plugin.
Katrin Leinweber

80

Không có câu trả lời nào phù hợp với tôi. Nhưng lấy cảm hứng từ câu trả lời của BarryPye, tôi phát hiện ra nó hoạt động khi sử dụng các đường dẫn tương đối!

# 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
Bắt đầu từ một đường dẫn url bằng "./" ngụ ý tìm kiếm bằng dir cục bộ, trong khi bắt đầu bằng "/" ngụ ý "tìm trong dir cơ sở". Đây là một quy ước Linux phổ biến. Tôi nghi ngờ có lẽ bạn không có dir cơ sở đầy đủ?
HoldOffHunger

5
Câu trả lời này khác với câu trả lời của @ BarryPye như thế nào?
StephenBoesch,

@javadba Dấu chấm than (!) trong câu trả lời của BarryPye hiển thị tệp dưới dạng hình ảnh. Câu hỏi đề cập đến một liên kết đến một tệp khác. (Tôi biết, chậm, chậm, trả lời câu hỏi của bạn nhưng tôi nghĩ những người khác có thể muốn biết câu trả lời.)
RichTBreak

Điều quan trọng là không có khoảng cách giữa các ký tự] và (
jbustamovej

21

Bạn liên kết đến một tệp cục bộ giống như cách bạn liên kết với hình ảnh cục bộ. Đây là một ví dụ để liên kết đến tệp start_caQtDM_7id.shtrong cùng thư mục với nguồn đánh dấu:

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

Điều này "!" là quan trọng! Cảm ơn!
Yuriy Kulikov

Đó là một phần của cú pháp đánh dấu có hương vị Github để hiển thị hình ảnh, hãy xem "Hình ảnh" trong hướng dẫn.github.com/features/mastering
markdown

13

Sau khi lộn xộn với câu trả lời @ BringBackCroteore64, tôi đã tìm ra nó

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

Tất cả chúng đều đã được thử nghiệm Visual Studio Codevà hoạt động,

Lưu ý : Đường dẫn tuyệt đối hoạt động trong trình chỉnh sửa nhưng không hoạt động trong chế độ xem trước đánh dấu!


Lưu ý của bạn là rất quan trọng!
Thịnh NV

7

Nếu bạn có khoảng trắng trong tên tệp, hãy thử các bước sau:

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

Cái đầu tiên có vẻ đáng tin cậy hơn


Không rõ vấn đề của bạn là gì và bạn đang hỏi gì. Có phải câu hỏi: tên tệp nào đáng tin cậy hơn?
Seymour

1

Cảm ơn bạn drifty0pine!

Giải pháp đầu tiên, nó hoạt động!

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

nhưng tôi cần đặt nhiều hơn ../cho đến khi thư mục chứa tệp của tôi, như sau:

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

0

Nếu tệp nằm trong cùng thư mục với tệp .md, thì chỉ cần đặt [Click here](MY-FILE.md)sẽ hoạt động.

Nếu không, có thể tạo một đường dẫn từ thư mục gốc của dự án. Vì vậy, nếu toàn bộ thư mục gốc của dự án / git-repo được gọi là 'my-app' và một người muốn trỏ đến my-app / client / read-me.md, thì hãy thử [My hyperlink](/client/read-me.md).

Ít nhất là hoạt động từ Chrome.


0

Đây là một câu hỏi cũ, nhưng với tôi, nó dường như vẫn chưa có câu trả lời hoàn chỉnh cho câu hỏi của OP. Theo kinh nghiệm của tôi, câu trả lời đã chọn về bảo mật là vấn đề có thể xảy ra thực sự thường không phải là vấn đề khi sử dụng trình cắm thêm Firefox 'Markdown Viewer'. Ngoài ra, OP dường như đang sử dụng MS-Windows, do đó, có thêm vấn đề khi chỉ định các ổ đĩa khác nhau.

Vì vậy, đây là một câu trả lời đầy đủ hơn nhưng đơn giản hơn một chút cho trình cắm 'Markdown Viewer' trên Windows (và các trình kết xuất Markdown khác mà tôi đã thấy): chỉ cần nhập đường dẫn cục bộ như bạn thường làm và nếu đó là đường dẫn tuyệt đối đảm bảo bắt đầu nó bằng một dấu gạch chéo. Vì thế:

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

Điều cuối cùng đó có lẽ là những gì OP đang tìm kiếm dựa trên ví dụ của họ. Lưu ý rằng điều này cũng có thể được sử dụng để hiển thị các thư mục hơn là các tệp.

Mặc dù muộn, tôi hy vọng điều này sẽ giúp ích!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.