Які способи зробити HTML-посилання відкрити папку


106

Мені потрібно дозволити користувачам програми відкрити папку, натиснувши посилання всередині веб-сторінки. Шлях до папки є в мережі та доступ до неї можна звідусіль. Я, певно, впевнений, що для цього немає простого способу, але, можливо, я помиляюся?


4
Я відповів нижче; це загальна вимога корпоративних веб-додатків, що стає майже неможливим через неправильну безпеку (слід включити посилання на файли на надійних http-сторінках). Я протестував досить широко в Windows.
Ендрю Даффі

Відповіді:


107

Ви хочете відкрити спільну папку в Провіднику Windows? Вам потрібно скористатися file:посиланням, але є застереження:

  • Internet Explorer буде працювати, якщо посилання є конвертованим контуром UNC ( file://server/share/folder/).
  • Firefox буде працювати, якщо посилання знаходиться у власному вигляді, за допомогою п'яти косої риски ( file://///server/share/folder), а користувач відключив обмеження безпеки для file:посилань на сторінці, розміщеній через HTTP . На щастя, IE також приймає розроблену форму посилання.
  • Opera, Safari та Chrome не можуть переконатись, що вони відкрили file:посилання на сторінці, що подається через HTTP.

4
в IE, тільки якщо шлях UNC та веб-сайт, що містить посилання, знаходяться в одному домені, тобто лише в інтрамережі.
Стефан Штайгер

4
Я думаю, це вже не правильно - нові версії IE, схоже, блокують цю поведінку так само, як Chrome / Safari / тощо.
ZeekLTK

1
Я просто спробував це в IE 11, і ви насправді можете відкрити локальний файл, не завантажуючи його (як у відкритому вже існуючому шляху до файлу). Цього досі в хромі не існує.
Hohohodown

4
Ви можете дозволити це працювати в Chrome за допомогою розширення Chrome LocalLinks . Завдяки цій відповіді StackOverflow
Зак Джонсон

@Andrew Duffy, чи є якась документація, яка говорить про те, що Google Chrome блокує таку поведінку? Я хотів би дізнатися більше про це
каламбур


4

переконайтеся, що дозволи вашої папки встановлені таким чином, що дозволено перелік каталогів, а потім просто наведіть прив’язку до цієї папки за допомогою chmod 701 (що, можливо, може бути ризиковано), наприклад

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

переконайтеся, що у вас немає індексу файла index.html


Ця відповідь працює. Частина "Дозволений перелік каталогів" є дуже важливою. Якщо це заборонено, ви можете ввімкнути його, але це різне для кожного серверного додатка.
Тревіс

3

Використання файлу: ///// просто не працює, якщо налаштування безпеки встановлено навіть на помірний рівень.

Якщо ви просто хочете, щоб користувачі мали змогу завантажувати / переглядати файли *, розташовані в мережі, або ділитися ними, ви можете налаштувати Віртуальний каталог у IIS. На вкладці "Властивості" переконайтесь, що вибрано "Акція, розташована на іншому комп'ютері", а "Підключити як ..." - це обліковий запис, який може бачити мережеве розташування.

Посилання на віртуальний каталог з вашої веб-сторінки (наприклад, http: // yoursite / yourvirtualdir / ), і це відкриє подання каталогу у веб-браузері.

* Ви можете дозволити дозволу на запис у віртуальному каталозі, щоб дозволити користувачам додавати файли, але не пробував їх, і припускати, що мережеві дозволи замінять це налаштування.


Це актуально сьогодні, оскільки Chrome і новіші версії IE блокують доступ до локального файлу: // ресурсів з нефайлових веб-сторінок. Крім того, це може бути налаштовано для запуску в IIS Express, хоча його потрібно додати та запустити вручну.
Шмулі


1

Ви також можете скопіювати адресу посилання та вставити її у нове вікно, щоб обійти безпеку. Це працює в chrome та firefox, але, можливо, вам доведеться додати косої частини у firefox.


1

Трохи спізнившись на вечірку, але мені довелося вирішити це нещодавно, хоча і дещо інакше, це все одно може допомогти комусь із подібними обставинами до моїх.

Я використовую xampp на ноутбуці для запуску чисто локального додатку для веб-сайтів у Windows. (Я знаю дуже специфічне середовище). У цьому випадку я використовую HTML-посилання на файл php і запускаю:

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

Відкриється вікно локального провідника Windows.


1
Обіцяюче, але коли я запускаю це у Firefox, вкладка висить. (Здається, підбиваю сеанс чи щось подібне, тому що я можу отримати доступ до інших сайтів, але цей сайт, здається, підвішений - навіть на інших вкладках!)
Stephen R

Я щойно тестував його у Firefox, він працює для мене, але я не можу вказати папку, в якій потрібно відкритись, вона відкривається лише у кореневому каталозі файлу php.
Лукас Таулелія

0

Сподіваюся, що коли-небудь це допоможе. Я робив невеликий POC і натрапив на це. Кнопка, onClick відображення вмісту папки. Нижче наведено HTML,

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.