Как сделать так, чтобы 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 с помощью расширения LocalLinks Chrome . Благодаря этому ответу StackOverflow
Зак Джонсон

@ Эндрю Даффи, есть ли какая-либо документация, в которой говорится, что Google Chrome блокирует такое поведение? Я хотел бы узнать об этом побольше
каламбур


4

убедитесь, что права доступа к вашей папке установлены так, что разрешен список каталогов, а затем просто укажите привязку к этой папке с помощью chmod 701 (хотя это может быть рискованно), например

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

убедитесь, что у вас нет index.html любого индексного файла в этом каталоге


Этот ответ работает. Часть "разрешенный список каталогов" очень важна. Если это не разрешено, вы можете включить его, но для каждого серверного приложения он разный.
Трэвис

3

Использование file: ///// просто не работает, если настройки безопасности установлены даже на средний уровень.

Если вы просто хотите, чтобы пользователи могли загружать / просматривать файлы *, расположенные в сети или совместно используемые, вы можете настроить виртуальный каталог в IIS. На вкладке «Свойства» убедитесь, что выбран «Общий ресурс, расположенный на другом компьютере», а «Подключиться как ...» - это учетная запись, которая может видеть сетевое расположение.

Ссылка на виртуальный каталог со своей веб-страницы (например, http: // yoursite / yourvirtualdir / ), и это откроет представление каталога в веб-браузере.

* Вы можете разрешить права на запись в виртуальный каталог, чтобы пользователи могли добавлять файлы, но не пробовали, и предполагать, что сетевые разрешения переопределяют этот параметр.


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


1

Вы также можете скопировать адрес ссылки и вставить его в новое окно, чтобы обойти безопасность. Это работает в Chrome и Firefox, но вам, возможно, придется добавить косые черты в Firefox.


1

Немного поздно на вечеринку, но я должен был решить это для себя недавно, хотя и немного по-другому, это все равно может помочь кому-то в обстоятельствах, похожих на мои.

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

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

Откроется окно локального проводника Windows.


1
Многообещающе, но когда я запускаю это в Firefox, вкладка зависает. (Кажется, что сеанс перемешивается или что-то в этом роде, потому что я могу получить доступ к другим сайтам, но этот сайт кажется
Стивен Р.

Я только что протестировал его в Firefox, у меня он работает, но я не могу указать папку, в которой открывать, он открывается только в корневом каталоге php-файла.
Лукас Таулеалеа

0

Надеюсь, это когда-нибудь поможет кому-то. Я делал небольшой POC и наткнулся на это. Кнопка, onClick отображает содержимое папки. Ниже HTML,

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

Chrome выдает ошибку: не разрешено загружать локальный ресурс: <URL>
Дэйв Соттимано

@Dave Sottimano Я только что тестировал. У меня работает в Google Chrome, версия 84.0.4147.135 (официальная сборка) (64-бит)
Nagaraja JB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.