Открыть локальную папку по ссылке
Как я могу открыть представление локальной папки, нажав на любую ссылку?
Я перепробовал много вариантов, таких как
<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>
5 ответов
Ссылки на локальные ресурсы отключены во всех современных браузерах из-за ограничений безопасности.
Для Firefox:
В целях безопасности приложения Mozilla блокируют ссылки на локальные файлы (и каталоги) из удаленных файлов. Это включает в себя ссылки на файлы на вашем жестком диске, на подключенные сетевые диски и доступные через пути UNC. Это предотвращает ряд неприятных возможностей, в том числе:
- Разрешить сайтам определять вашу операционную систему, проверяя пути установки по умолчанию
- Разрешение сайтам использовать уязвимости системы (например, C:\con\con в Windows 95/98)
- Разрешить сайтам определять настройки браузера или читать конфиденциальные данные
для IE:
Internet Explorer 6 с пакетом обновления 1 (SP1) больше не позволяет просматривать локальный компьютер из зоны Интернета. Например, если интернет-сайт содержит ссылку на локальный файл, Internet Explorer 6 SP1 отображает пустую страницу, когда пользователь нажимает на ссылку. Предыдущие версии Windows Internet Explorer следовали по ссылке на локальный файл.
для Opera (в контексте рекомендаций по безопасности, я уверен, что есть более каноническая ссылка для этого):
В качестве меры безопасности Opera не позволяет веб-страницам ссылаться на файлы на локальном диске пользователя.
Решение: запуск ссылки для скачивания
Следующее работает во всех браузерах, но как всегда есть предостережения.
Фон:
"Ярлыки URL" зависят от ОС. Следующее решение предназначено для MS Windows из-за отсутствия стандартов между средами.
Если вам требуется поддержка Linux для решения ниже, см. Эту статью.
* У меня нет связи со статьей, YMMV.
Ярлыки URL доступны в двух формах:
Файлы с расширениями.URL основаны на тексте. Может генерироваться динамически.
[InternetShortcut]
URL = файл:///D:/Файлы с расширением.LNK являются двоичными. Они могут генерироваться динамически, но требуют реализации iShelLinkInterface. Это усложняется ограничениями ОС по умолчанию, которые по праву не позволяют процессу IIS достичь Shell.
.URL является рекомендуемым решением, так как динамическая генерация жизнеспособна для веб-языков / фреймворков и допускает реализацию KISS.
Обзор / Резюме:
- Ограничения безопасности не позволят вам открыть проводник пути / запуска прямо со страницы (как утверждает @Pekka).
- На сайтах, размещенных извне (не на вашем локальном компьютере), не будет разрешено file:///... uri с разрешениями безопасности по умолчанию.
Решение:
Укажите загружаемую ссылку (.URL или.LNK) на ресурс. Поведение браузера будет объяснено в конце поста.
Вариант 1. Создайте файл.lnk и сохраните его на сервере. Из-за двоичного характера файла.LNK это не рекомендуемое решение, но предварительно созданный файл должен быть жизнеспособным.
Вариант 2. Создайте файл.url и сохраните его на сервере или создайте его динамически. В моей ситуации я динамически создаю файл.URL.
Детали решения (.URL):
Добавьте.url к доступным MIME-типам на вашем веб-сервере.
Для IIS откройте сайт, выберите MIME Types и добавьте следующее:Расширение имени файла = .url
Тип MIME: приложение / интернет-ярлыкPer @cremax ... Для браузеров Webkit, таких как Chrome на серверах Apache, добавьте этот код в.htaccess или http.config:
SetEnvIf Request_URI ".url $" required_url=url Заголовок добавить Content-Disposition "attachment" env=required_url
Файл.url представляет собой текстовый файл, отформатированный следующим образом (опять же, это может быть сгенерировано динамически).
Содержание файла:
[InternetShortcut]
URL = файл: /// D:Укажите ссылку на скрипт, который генерирует файл.url, или на сам файл.
Если вы просто загрузили файл.url на свой сервер, добавьте следующее в ваш HTML:
<a href="URIShortcut.url">Round-About Linking</a>
Зависимое от браузера поведение
Chrome: загрузите / сохраните файл.url, затем откройте
В Chrome это поведение можно дополнить, выбрав опцию "Всегда открывать файлы этого типа".
FireFox: загрузите / сохраните файл.url, затем откройте
Internet Explorer: нажмите "Открыть" и перейдите прямо в каталог (не нужно сохранять ярлык)
Internet Explorer имеет предпочтительное поведение, но Chrome и Firefox по крайней мере исправны.
Только IE6-8 - есть обходной путь ActiveX в локальных файлах в JavaScript:
function OpenImage(filePath)
{
var myshell = new ActiveXObject("WScript.shell");
myshell.run(filePath, 1, true);
}
Ты можешь использовать
<a href="\\computername\folder">Open folder</a>
в Internet Explorer
Добавить по щелчку открыть локальный каталог или локальный файл в Goo gle Chrome:
Решение от JFish222 работает (решение для файла URL)
Для браузеров Webkid, таких как Chrome на серверах Apache, просто добавьте в.htaccess или http.config этот код:
SetEnvIf Request_URI ".url $" required_url=url Заголовок добавить Content-Disposition "attachment" env=required_url
И по первой загрузке вашего URL-файла нажмите на файл в панели загрузки chromes и выберите "всегда открывать этот файл".
Local Explorer - файловый менеджер на расширение веб-браузера может решить для Chrome
но все еще некоторые проблемы с кодировкой
URL -адрес Указывает URL -адрес документа для встраивания в iframe. Возможные значения:
Абсолютный URL - указывает на другой веб-сайт (например, src="http://www.example.com/default.htm") Относительный URL - указывает на файл на веб-сайте (например, src="default.htm")