Открыть локальную папку по ссылке - PullRequest
29 голосов
/ 09 марта 2011

Как открыть представление локальной папки, нажав на любую ссылку?

Я пробовал много вариантов, как

<a href="file:///D:/Tools/">Open folder</a> или

<a onclick="file:///D:/Tools/">Open folder</a> или

<a onclick="window.open(file:///D:/Tools/)">Open folder</a>

Ответы [ 6 ]

38 голосов
/ 10 января 2013

Решение: запуск ссылки для скачивания

Следующее работает во всех браузерах, но как всегда есть предупреждения.

Фон:

"Ярлыки URL "зависят от ОС.Следующее решение предназначено для MS Windows из-за отсутствия стандартов между средами.

Если вам требуется поддержка linux для приведенного ниже решения, см. Эту статью .
* У меня нетВ связи с этой статьей YMMV.

ярлыки URL-адресов представлены в двух формах:

  1. Файлы с расширениями .URL основаны на тексте.Может генерироваться динамически.

    [InternetShortcut]
    URL = файл: /// D: /

  2. Файлы с расширением .LNKявляются двоичнымиОни могут генерироваться динамически, но требуют реализации iShelLinkInterface.Это усложняется ограничениями ОС по умолчанию, которые по праву не позволяют процессам IIS достичь Shell.

.URL является рекомендуемым решением, поскольку динамическая генерация жизнеспособна для веб-языков / фреймворков и позволяетреализация KISS.


Обзор / Резюме:

  1. Ограничения безопасности не позволят вам открыть проводник пути / запуска непосредственно со страницы (как указано @Pekka).
  2. Сайты, размещенные извне (не на вашем локальном компьютере), не допускают файл: /// ... uri с разрешениями безопасности по умолчанию.

Решение:

Укажите загружаемую ссылку (.URL или .LNK) на ресурс.Поведение браузера будет объяснено в конце поста.

Вариант 1: Создайте файл .lnk и сохраните его на сервере.Из-за бинарной природы файла .LNK это не рекомендуемое решение, но предварительно созданный файл должен быть жизнеспособным.

Вариант 2: Создайте файл .url и либо сохраните его на сервере, либо динамически сгенерируйте.В моей ситуации я динамически создаю файл .URL.


Подробная информация о решении (.URL):

  1. Добавить .urlна доступные типы MIME на вашем веб-сервере.

    Для IIS откройте сайт, выберите MIME Types и добавьте следующее:

    Расширение имени файла = .url
    Тип MIME: application / internet-shortcut

    Per @cremax ... Для браузеров Webkit, таких как Chrome на серверах Apache, добавьте этот код в .htaccess или http.config:

    SetEnvIf Request_URI ".url $"required_url = url Заголовок add Content-Disposition "attachment" env = required_url

  2. .url - это текстовый файл, отформатированный следующим образом (опять же, это может быть сгенерировано динамически).

    Содержимое файла:

    [InternetShortcut]
    URL = файл: /// D:

  3. Укажитессылка на скрипт, который генерирует файл .url, или на сам файл.

    Если вы просто загрузили файл .url на свой сервер, добавьте в свой HTML-код следующее:

    <a href="URIShortcut.url">Round-About Linking</a>


Поведение, зависящее от браузера

Chrome : скачать / сохранить файл .url, затем открыть
В Chrome это поведение можно дополнить, выбрав параметр «Всегда открывать файлы этого типа».

FireFox : загрузить / сохранить файл.url, а затем открыть

Internet Explorer : нажмите «Открыть» и перейдите прямо к каталогу (не нужно сохранять ярлык)

Internet Explorer имеет предпочтительное поведение, но Chrome и Firefox по крайней мере исправны.

28 голосов
/ 09 марта 2011

Ссылки на локальные ресурсы отключены во всех современных браузерах из-за ограничений безопасности.

Для Firefox :

В целях безопасности приложения Mozilla блокируют ссылкив локальные файлы (и каталоги) из удаленных файлов.Это включает в себя ссылки на файлы на вашем жестком диске, на подключенные сетевые диски и доступные через пути UNC.Это предотвращает ряд неприятных возможностей, в том числе:

  • Разрешение сайтам обнаруживать вашу операционную систему путем проверки путей установки по умолчанию
  • Разрешение сайтам использовать уязвимости системы (например, C: \ con\ con в Windows 95/98)
  • Разрешение сайтам определять настройки браузера или считывать конфиденциальные данные

для IE :

Internet Explorer 6 с пакетом обновления 1 (SP1) больше не позволяет просматривать локальный компьютер из зоны Интернета.Например, если интернет-сайт содержит ссылку на локальный файл, Internet Explorer 6 SP1 отображает пустую страницу, когда пользователь нажимает на ссылку.Предыдущие версии Windows Internet Explorer следовали по ссылке на локальный файл.

для Opera (в контексте рекомендаций по безопасности я уверен, что есть более каноническая ссылкадля этого):

В качестве меры безопасности Opera не разрешает веб-страницам ссылаться на файлы на локальном диске пользователя

4 голосов
/ 30 ноября 2011

Только IE6-8 - есть обходной путь ActiveX в локальных файлах в JavaScript:

        function OpenImage(filePath)
        {
            var myshell = new ActiveXObject("WScript.shell");
            myshell.run(filePath, 1, true); 
        }
2 голосов
/ 11 января 2013

добавить при щелчке открыть локальный каталог или локальный файл в Google Chrome:

Работает решение от JFish222 (решение для файла URL)

Для браузеров Webkid, таких как Chrome на серверах Apache, просто добавьте.htaccess o http.config этот код:

SetEnvIf Request_URI ".url $" required_url = url заголовок добавить расположение содержимого "вложение" env = required_url

и по первой загрузке вашего файла URLнажмите на файл в панели загрузки chromes и выберите «всегда открывать этот файл».

2 голосов
/ 09 марта 2011

вы можете использовать

<a href="\\computername\folder">Open folder</a>

в Internet Explorer

0 голосов
/ 02 апреля 2019

Локальный проводник - Файловый менеджер на расширение веб-браузера может решить для Chrome

но некоторые проблемы с кодировкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...