ลิงก์ไปยังไฟล์ในเครื่องที่มีไวยากรณ์ markdown ได้อย่างไร


93

ฉันมีไฟล์ markdown ในเครื่องที่มีหลายลิงค์และฉันต้องการให้ลิงก์นั้นไปที่ไฟล์ในเครื่องเช่น pdf

ฉันใช้ไวยากรณ์ต่อไปนี้:

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

แต่เมื่อฉันเปิดไฟล์ markdown ในหน้า Firefox และคลิกที่ลิงค์ไม่มีอะไรเกิดขึ้น

ฉันพลาดอะไรไปกันแน่? เป็นไปได้ไหมที่จะเปิดไฟล์ในเครื่อง?


นอกจากนี้ยังมีคำตอบที่นี่ดูเหมือนจะเป็นคำถามที่ซ้ำกัน: stackoverflow.com/a/58317580/5890679
Akul Aggarwal

Vim ไฮไลต์ markdown อย่างดีรวมถึงลิงค์เว็บที่คลิกได้ อนิจจาท้องถิ่นเชื่อมโยง แต่ไฮไลต์จะไม่เปิด
user2023370

คำตอบ:


32

คุณเปิด Markdown ที่แสดงผลได้อย่างไร

หากคุณเป็นเจ้าภาพนั้นผ่าน HTTP คือคุณสามารถเข้าถึงได้ผ่านทางhttp://หรือเบราว์เซอร์ที่ทันสมัยที่สุดจะปฏิเสธที่จะเชื่อมโยงท้องถิ่นเปิดเช่นกับhttps:// file://นี่คือคุณสมบัติด้านความปลอดภัย :

เพื่อความปลอดภัยแอ็พพลิเคชัน Mozilla บล็อกลิงก์ไปยังไฟล์ในเครื่อง (และไดเร็กทอรี) จากไฟล์ระยะไกล ซึ่งรวมถึงการเชื่อมโยงไปยังไฟล์ในฮาร์ดไดรฟ์ของคุณบนไดรฟ์เครือข่ายที่แมปและเข้าถึงได้ผ่านเส้นทางUniform Naming Convention (UNC) สิ่งนี้ช่วยป้องกันความเป็นไปได้ที่ไม่พึงประสงค์หลายประการ ได้แก่ :

  • อนุญาตให้ไซต์ตรวจพบระบบปฏิบัติการของคุณโดยตรวจสอบเส้นทางการติดตั้งเริ่มต้น
  • การอนุญาตให้ไซต์ใช้ประโยชน์จากช่องโหว่ของระบบ (เช่นC:\con\conใน Windows 95/98)
  • อนุญาตให้ไซต์ตรวจจับค่ากำหนดของเบราว์เซอร์หรืออ่านข้อมูลที่ละเอียดอ่อน

มีวิธีแก้ปัญหาบางอย่างอยู่ในหน้านั้น แต่คำแนะนำของฉันคือหลีกเลี่ยงการทำเช่นนี้หากทำได้


1
อย่างที่บอกไปว่าฉันเปิดไฟล์ markdown ด้วย Mozilla Firefox 40.0.3 ด้วยปลั๊กอิน 'Markdown Viewer'
Alexis Le Provost

อ่าคุณไม่เคยพูดถึงปลั๊กอินนั้นมาก่อน ;-) ฉันลองใช้กับการส่งออก HTML (สิ่งที่ฉันคิดว่า "หน้า Firefox" หมายถึง) ของ MarkdownPad โปรดตรวจสอบช่องความช่วยเหลือ / การสนับสนุนของปลั๊กอิน
Katrin Leinweber

88

ไม่มีคำตอบใดที่เหมาะกับฉัน แต่ได้รับแรงบันดาลใจจากคำตอบของ 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 ด้วย "./" หมายถึง look ใน dir ท้องถิ่นในขณะที่เริ่มต้นด้วย "/" หมายถึง "look ใน base dir" นี่คืออนุสัญญา Linux ที่แพร่หลาย ฉันสงสัยว่าบางทีคุณอาจไม่มี dir ฐานแบบเต็ม?
HoldOffHunger

5
สิ่งนี้แตกต่างจากคำตอบของ @ BarryPye อย่างไร?
StephenBoesch

@javadba เครื่องหมายอัศเจรีย์ (!) ในคำตอบของ BarryPye จะแสดงไฟล์เป็นรูปภาพ คำถามอ้างถึงลิงก์ไปยังไฟล์อื่น (ฉันรู้ช้าช้าตอบคำถามของคุณ แต่ฉันคิดว่าคนอื่นอาจอยากรู้คำตอบ)
RichTBreak

สิ่งสำคัญคืออย่าเว้นวรรคระหว่าง] และ (ตัวอักษร
jbustamovej

21

คุณเชื่อมโยงไปยังไฟล์ในเครื่องในลักษณะเดียวกับที่คุณลิงก์ไปยังภาพในเครื่อง นี่คือตัวอย่างการเชื่อมโยงไปยังไฟล์start_caQtDM_7id.shในไดเร็กทอรีเดียวกับแหล่งที่มาของ markdown:

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

นี้ "!" เป็นสิ่งสำคัญ! ขอบคุณ!
Yuriy Kulikov

เป็นส่วนหนึ่งของไวยากรณ์มาร์กดาวน์ที่ปรุงแต่งของ Github เพื่อแสดงภาพโปรดดู "รูปภาพ" ภายใต้guide.github.com/features/mastering-markdown
BarryPye

13

หลังจากยุ่งกับคำตอบของ @ BringBackC commore64 ฉันก็คิดออก

[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

8

หากคุณมีช่องว่างในชื่อไฟล์ให้ลองทำดังนี้:

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

อย่างแรกดูน่าเชื่อถือกว่า


ยังไม่ชัดเจนว่าปัญหาของคุณคืออะไรและคุณกำลังถามอะไร คำถามคือชื่อไฟล์ใดน่าเชื่อถือกว่ากัน
Seymour

2

ขอบคุณ 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)ก็ควรใช้งานได้

มิฉะนั้นสามารถสร้างเส้นทางจากไดเรกทอรีรากของโครงการ ดังนั้นหากไดเรกทอรีรากโครงการ /-git repo ทั้งหมดจะถูกเรียกว่า 'ฉัน-app' และใครอยากจะชี้ไปที่ My-app / ลูกค้า / read-me.md [My hyperlink](/client/read-me.md)แล้วลอง

อย่างน้อยก็ใช้งานได้จาก Chrome


0

นี่เป็นคำถามเก่า แต่สำหรับฉันแล้วดูเหมือนว่ายังไม่มีคำตอบที่สมบูรณ์สำหรับคำถามของ OP คำตอบที่เลือกเกี่ยวกับความปลอดภัยเป็นปัญหาที่อาจเกิดขึ้นได้นั้นมักจะไม่เป็นเช่นนั้นปัญหาเมื่อใช้ปลั๊กอิน 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)

สุดท้ายนั้นน่าจะเป็นสิ่งที่ OP กำลังมองหาจากตัวอย่างของพวกเขา โปรดทราบว่าสิ่งนี้สามารถใช้เพื่อแสดงไดเร็กทอรีแทนไฟล์

แม้ว่าจะสาย แต่ฉันหวังว่านี่จะช่วยได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.