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