Những cách nào để tạo một liên kết html mở một thư mục


106

Tôi cần cho phép người dùng ứng dụng mở thư mục bằng cách nhấp vào liên kết bên trong trang web. Đường dẫn của thư mục nằm trên mạng và có thể được truy cập từ mọi nơi. Tôi có lẽ chắc chắn rằng không có cách nào dễ dàng để làm điều này, nhưng có lẽ tôi đã nhầm?


4
Tôi đã trả lời dưới đây; đây là một yêu cầu phổ biến của các ứng dụng web doanh nghiệp gần như không thể thực hiện được bởi bảo mật sai lầm (có thể kích hoạt các liên kết tệp trong các trang http đáng tin cậy). Tôi chỉ mới thử nghiệm rộng rãi trên Windows.
Andrew Duffy

Câu trả lời:


107

Bạn có muốn mở một thư mục chia sẻ trong Windows Explorer không? Bạn cần sử dụng một file:liên kết, nhưng có những lưu ý:

  • Internet Explorer sẽ hoạt động nếu liên kết là một đường dẫn UNC được chuyển đổi ( file://server/share/folder/).
  • Firefox sẽ hoạt động nếu liên kết ở dạng bị xáo trộn của riêng nó sử dụng năm dấu gạch chéo ( file://///server/share/folder) người dùng đã vô hiệu hóa giới hạn bảo mật đối với file:các liên kết trong một trang được phân phát qua HTTP . Rất may, IE cũng chấp nhận dạng liên kết bị xáo trộn.
  • Không thể thuyết phục Opera, Safari và Chrome mở một file:liên kết trong một trang được phân phát qua HTTP.

4
trong IE chỉ khi đường dẫn UNC và trang web chứa liên kết nằm trong cùng một miền, nghĩa là chỉ trong mạng nội bộ.
Stefan Steiger

4
Tôi nghĩ điều này không còn đúng nữa - các phiên bản IE mới hơn dường như chặn hành vi này giống như Chrome / Safari / v.v.
ZeekLTK

1
Tôi vừa thử điều này trong IE 11 và trên thực tế, bạn có thể mở tệp cục bộ mà không cần tải xuống (như khi mở đường dẫn tệp đã có). Điều này vẫn không tồn tại trong chrome.
Hohohodown

4
Bạn có thể làm cho điều này hoạt động trong Chrome thông qua tiện ích mở rộng LocalLinks của Chrome . Nhờ câu trả lời StackOverflow này
Zach Johnson

@Andrew Duffy, có loại tài liệu nào nói rằng Google Chrome đang chặn hành vi này không? Tôi muốn biết thêm về điều này
chơi chữ

7

URL file://[servername]/[sharename]sẽ mở một cửa sổ thám hiểm đến thư mục được chia sẻ trên mạng.


4

đảm bảo quyền thư mục của bạn được đặt để danh sách thư mục được phép, sau đó chỉ cần trỏ liên kết của bạn đến thư mục đó bằng cách sử dụng chmod 701 (mặc dù vậy có thể rủi ro)

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

đảm bảo rằng bạn không có index.html bất kỳ tệp chỉ mục nào trên thư mục đó


Câu trả lời này hoạt động. Phần "danh sách thư mục được phép" là rất quan trọng. Nếu nó không được phép, bạn có thể bật nó nhưng nó khác nhau đối với mọi ứng dụng máy chủ.
Travis

3

Sử dụng tệp: ///// chỉ không hoạt động nếu cài đặt bảo mật được đặt ở mức vừa phải.

Nếu bạn chỉ muốn người dùng có thể tải xuống / xem các tệp * nằm trên mạng hoặc chia sẻ, bạn có thể thiết lập Thư mục ảo trong IIS. Trên tab Thuộc tính, đảm bảo chọn "Chia sẻ nằm trên máy tính khác" và "Kết nối với tư cách ..." là tài khoản có thể xem vị trí mạng.

Liên kết đến thư mục ảo từ trang web của bạn (ví dụ: http: // yourite / yourvirtualdir / ) và điều này sẽ mở ra chế độ xem thư mục trong trình duyệt web.

* Bạn có thể cho phép quyền ghi trên thư mục ảo để cho phép người dùng thêm tệp nhưng chưa thử và cho rằng quyền mạng sẽ ghi đè cài đặt này.


Điều này có liên quan ngày nay, vì Chrome và các phiên bản IE mới hơn sẽ chặn quyền truy cập vào tài nguyên tệp cục bộ: // từ các trang web không phải tệp. Ngoài ra, điều này có thể được thiết lập để chạy trong IIS Express, mặc dù nó phải được thêm vào và chạy thủ công.
Schmuli


1

Bạn cũng có thể sao chép địa chỉ liên kết và dán vào cửa sổ mới để bảo mật. Điều này hoạt động trong chrome và firefox nhưng bạn có thể phải thêm dấu gạch chéo trong firefox.


1

Đến bữa tiệc hơi muộn, nhưng gần đây tôi phải giải quyết chuyện này cho mình, tuy hơi khác một chút nhưng có thể vẫn giúp được người có hoàn cảnh giống mình.

Tôi đang sử dụng xampp trên máy tính xách tay để chạy một ứng dụng trang web hoàn toàn cục bộ trên windows. (Một môi trường rất cụ thể mà tôi biết). Trong trường hợp này, tôi sử dụng liên kết html tới tệp php và chạy:

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

Thao tác này sẽ mở ra một cửa sổ khám phá Windows cục bộ.


1
Hứa hẹn, nhưng khi tôi chạy điều này trong Firefox, tab bị treo. (Có vẻ được khuấy phiên hoặc một cái gì đó, vì tôi có thể truy cập vào các trang web khác, nhưng trang web này dường như được treo - thậm chí trong các tab khác)
Stephen R

Tôi vừa thử nghiệm nó trên Firefox, nó hoạt động với tôi, nhưng tôi không thể chỉ định thư mục để mở, nó chỉ mở trong thư mục gốc của tệp php.
Lucas Taulealea

0

Hy vọng một ngày nào đó nó sẽ giúp ích cho ai đó. Tôi đang tạo một POC nhỏ và bắt gặp điều này. Một nút, onClick hiển thị nội dung của thư mục. Dưới đây là HTML,

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>
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.