วิธีใดในการสร้างลิงก์ html เพื่อเปิดโฟลเดอร์


107

ฉันต้องการให้ผู้ใช้แอปพลิเคชันเปิดโฟลเดอร์โดยคลิกลิงก์ภายในเว็บเพจ เส้นทางของโฟลเดอร์อยู่บนเครือข่ายและสามารถเข้าถึงได้จากทุกที่ ฉันคงแน่ใจว่าไม่มีวิธีง่ายๆในการทำเช่นนี้ แต่ฉันอาจจะเข้าใจผิด?


4
ฉันได้ตอบไว้ด้านล่าง นี่เป็นข้อกำหนดทั่วไปของเว็บแอปพลิเคชันระดับองค์กรที่แทบจะเป็นไปไม่ได้เลยจากการรักษาความปลอดภัยที่เข้าใจผิด (ควรเปิดใช้งานลิงก์ไฟล์ในหน้า http ที่เชื่อถือได้) ฉันได้ทดสอบอย่างกว้างขวางบน Windows เท่านั้น
Andrew Duffy

คำตอบ:


107

คุณต้องการเปิดโฟลเดอร์ที่แชร์ใน Windows Explorer หรือไม่? คุณต้องใช้file:ลิงค์ แต่มีข้อแม้:


4
ใน IE ก็ต่อเมื่อเส้นทาง UNC และเว็บไซต์ที่มีลิงก์อยู่ในโดเมนเดียวกันกล่าวคือในอินทราเน็ตเท่านั้น
Stefan Steiger

5
ฉันคิดว่านี่ไม่ถูกต้องอีกต่อไป - IE เวอร์ชันใหม่ดูเหมือนจะบล็อกพฤติกรรมนี้เช่นเดียวกับ Chrome / Safari / ฯลฯ
ZeekLTK

1
ฉันเพิ่งลองสิ่งนี้ใน IE 11 และคุณสามารถเปิดไฟล์ในเครื่องได้โดยไม่ต้องดาวน์โหลด (เช่นเดียวกับการเปิดเส้นทางไฟล์ที่มีอยู่แล้ว) สิ่งนี้ยังไม่มีใน chrome
Hohohodown

4
คุณจะได้รับการทำงานใน Chrome ผ่านทาง ส่วนขยาย LocalLinks Chrome ขอบคุณสำหรับคำตอบ StackOverflow
Zach Johnson

@ แอนดรูดัฟฟี่มีเอกสารประเภทใดบ้างที่ระบุว่า Google Chrome กำลังบล็อกพฤติกรรมนี้ ฉันต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
ปุน


4

ตรวจสอบให้แน่ใจว่ามีการตั้งค่าสิทธิ์โฟลเดอร์ของคุณเพื่อให้อนุญาตรายการไดเร็กทอรีจากนั้นเพียงแค่ชี้จุดยึดของคุณไปที่โฟลเดอร์นั้นโดยใช้ chmod 701 (ซึ่งอาจมีความเสี่ยง)

<a href="./downloads/folder_i_want_to_display/" >Go to downloads page</a>

ตรวจสอบให้แน่ใจว่าคุณไม่มี index.html ไฟล์ดัชนีใด ๆ บนไดเร็กทอรีนั้น


คำตอบนี้ได้ผล ส่วน "รายการไดเรกทอรีที่อนุญาต" มีความสำคัญมาก หากไม่ได้รับอนุญาตคุณสามารถเปิดใช้งานได้ แต่จะแตกต่างกันสำหรับทุกแอปพลิเคชันเซิร์ฟเวอร์
Travis

3

การใช้ไฟล์: ///// จะไม่ได้ผลหากตั้งค่าความปลอดภัยไว้ที่ระดับปานกลาง

หากคุณต้องการให้ผู้ใช้สามารถดาวน์โหลด / ดูไฟล์ * ที่อยู่บนเครือข่ายหรือแชร์คุณสามารถตั้งค่า Virtual Directory ใน IIS ได้ บนแท็บคุณสมบัติตรวจสอบให้แน่ใจว่าได้เลือก "แชร์ที่อยู่บนคอมพิวเตอร์เครื่องอื่น" และ "เชื่อมต่อในฐานะ ... " คือบัญชีที่สามารถดูตำแหน่งเครือข่ายได้

ลิงก์ไปยังไดเรกทอรีเสมือนจากหน้าเว็บของคุณ (เช่นhttp: // yoursite / yourvirtualdir / ) และจะเปิดมุมมองของไดเรกทอรีในเว็บเบราว์เซอร์

* คุณสามารถอนุญาตการเขียนบนไดเร็กทอรีเสมือนเพื่ออนุญาตให้ผู้ใช้เพิ่มไฟล์ แต่ไม่ได้ลองและถือว่าสิทธิ์ของเครือข่ายจะแทนที่การตั้งค่านี้


สิ่งนี้มีความเกี่ยวข้องในปัจจุบันเนื่องจาก Chrome และ IE เวอร์ชันใหม่กว่าจะบล็อกการเข้าถึงไฟล์ในเครื่อง: // ทรัพยากรจากหน้าเว็บที่ไม่ใช่ไฟล์ นอกจากนี้ยังสามารถตั้งค่าให้ทำงานใน IIS Express ได้แม้ว่าจะต้องเพิ่มและเรียกใช้ด้วยตนเองก็ตาม
Schmuli


1

คุณยังสามารถคัดลอกที่อยู่ลิงก์และวางในหน้าต่างใหม่เพื่อป้องกันความปลอดภัย ใช้งานได้ใน chrome และ firefox แต่อาจต้องเพิ่มเครื่องหมายทับใน firefox


1

ไปงานปาร์ตี้ช้าไปหน่อย แต่ฉันต้องแก้ปัญหานี้ด้วยตัวเองเมื่อเร็ว ๆ นี้แม้ว่าจะแตกต่างกันเล็กน้อย แต่ก็อาจช่วยคนที่มีสถานการณ์คล้าย ๆ กันกับฉันได้

ฉันใช้ xampp บนแล็ปท็อปเพื่อเรียกใช้แอปเว็บไซต์ท้องถิ่นบน windows (สภาพแวดล้อมที่เฉพาะเจาะจงมากที่ฉันรู้จัก) ในกรณีนี้ฉันใช้ลิงก์ html ไปยังไฟล์ php และเรียกใช้:

shell_exec('cd C:\path\to\file');
shell_exec('start .');

ซึ่งจะเปิดหน้าต่าง Windows explorer ในเครื่อง


1
สัญญา แต่เมื่อฉันเรียกใช้สิ่งนี้ใน Firefox แท็บก็แฮงค์ (ดูเหมือนจะปั่นเซสชันหรืออะไรบางอย่างเพราะฉันสามารถเข้าถึงไซต์อื่น ๆ ได้ แต่ดูเหมือนว่าไซต์นี้จะถูกหยุดแม้ในแท็บอื่น ๆ !)
Stephen R

ฉันเพิ่งทดสอบใน Firefox มันใช้ได้สำหรับฉัน แต่ฉันไม่สามารถระบุโฟลเดอร์ที่จะเปิดได้มันจะเปิดเฉพาะในไดเรกทอรีรากของไฟล์ php เท่านั้น
Lucas Taulealea

0

หวังว่ามันจะช่วยใครสักคนในสักวัน ฉันกำลังทำ POC ขนาดเล็กและเจอสิ่งนี้ ปุ่ม onClick แสดงเนื้อหาของโฟลเดอร์ ด้านล่างนี้คือ HTML

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>

Chrome แจ้งข้อผิดพลาด: ไม่อนุญาตให้โหลดทรัพยากรในเครื่อง: <URL>
Dave Sottimano

@Dave Sottimano ฉันทดสอบแล้วตอนนี้ ใช้ได้กับฉันใน Google Chrome เวอร์ชัน 84.0.4147.135 (รุ่นอย่างเป็นทางการ) (64 บิต)
Nagaraja JB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.