Как сделать так, чтобы HTML-ссылка открывала папку
Мне нужно разрешить пользователям приложения открывать папку, щелкая ссылку на веб-странице. Путь к папке находится в сети и доступен отовсюду. Я наверное уверен, что нет простого способа сделать это, но может я ошибаюсь?
Я ответил ниже; это обычное требование корпоративных веб-приложений, которое становится практически невозможным из-за неправильной защиты (должна быть возможность разрешить файловые ссылки на доверенных http-страницах). Я только тщательно тестировал Windows.
Вы хотите открыть общую папку в проводнике Windows? Вам нужно использовать file: ссылку, но есть предостережения:
- Internet Explorer будет работать, если ссылка представляет собой преобразованный путь UNC ( file://server/share/folder/ ).
- Firefox будет работать, если ссылка находится в собственной искаженной форме с использованием пяти косых черт ( file://///server/share/folder ) и пользователь отключил ограничение безопасности для file: ссылок на странице, обслуживаемой через HTTP . К счастью, IE также принимает искаженную форму ссылки.
- Opera, Safari и Chrome невозможно убедить открыть file: ссылку на странице, обслуживаемой через HTTP.
в IE, только если путь UNC и веб-сайт, содержащий ссылку, находятся в одном домене, то есть только во внутренней сети.
Я думаю, что это больше не правильно — новые версии IE, похоже, блокируют это поведение так же, как Chrome / Safari и т. Д.
Я просто пробовал это в IE 11, и вы фактически можете открыть локальный файл, не загружая его (как при открытии уже существующего пути к файлу). Этого еще нет в хроме.
Вы можете заставить это работать в Chrome с помощью расширения LocalLinks Chrome . Благодаря этому ответу StackOverflow
@ Эндрю Даффи, есть ли какая-либо документация, в которой говорится, что Google Chrome блокирует такое поведение? Я хотел бы узнать об этом побольше
URL-адрес file://[servername]/[sharename] должен открывать окно проводника для общей папки в сети.
убедитесь, что права доступа к вашей папке установлены так, что разрешен список каталогов, а затем просто укажите привязку к этой папке с помощью chmod 701 (хотя это может быть рискованно), например
href="./downloads/folder_i_want_to_display/" >Go to downloads page
убедитесь, что у вас нет index.html любого индексного файла в этом каталоге
Этот ответ работает. Часть «разрешенный список каталогов» очень важна. Если это не разрешено, вы можете включить его, но для каждого серверного приложения он разный.
Использование file: ///// просто не работает, если настройки безопасности установлены даже на средний уровень.
Если вы просто хотите, чтобы пользователи могли загружать / просматривать файлы *, расположенные в сети или совместно используемые, вы можете настроить виртуальный каталог в IIS. На вкладке «Свойства» убедитесь, что выбран «Общий ресурс, расположенный на другом компьютере», а «Подключиться как . » — это учетная запись, которая может видеть сетевое расположение.
Ссылка на виртуальный каталог со своей веб-страницы (например, http: // yoursite / yourvirtualdir / ), и это откроет представление каталога в веб-браузере.
* Вы можете разрешить права на запись в виртуальный каталог, чтобы пользователи могли добавлять файлы, но не пробовали, и предполагать, что сетевые разрешения переопределяют этот параметр.
Это актуально сегодня, поскольку Chrome и более новые версии IE будут блокировать доступ к локальным ресурсам file: // с нефайловых веб-страниц. Кроме того, его можно настроить для работы в IIS Express, хотя его необходимо добавить и запустить вручную.
Не работает в Chrome, но другие ответы предлагают решение через плагин:
Почему изображения на странице видны только на моем компьютере и не отображаются на другом?
В примере 1 показано использование локального адреса, который приводит к тому, что на других компьютерах, а также после публикации на сайте, изображение становится недоступно.
Пример 1. Изображение видно только на моем компьютере
Чтобы устранить указанный недостаток, необходимо искоренять локальные адреса и заменять их относительными. Тогда значение атрибута src в примере 1 заменится на images/screenshot.png . В примере 2 показаны варианты указания адресов изображений на странице.
Пример 2. Адреса изображений



Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.
Популярные рецепты
Как добавить картинку на веб-страницу?
Как добавить иконку сайта в адресную строку браузера?
Как добавить фоновый рисунок на веб-страницу?
Как сделать обтекание картинки текстом?
Как растянуть фон на всю ширину окна?
Как выровнять фотографию по центру веб-страницы?
Как разместить элементы списка горизонтально?
Как убрать подчеркивание у ссылок?
Как убрать маркеры в маркированном списке?
Как изменить расстояние между строками текста?
Как сделать, чтобы картинка менялась при наведении на нее курсора мыши?
Как открыть ссылку в новом окне?
Как сделать так, чтобы HTML-ссылка открывала папку
Мне нужно разрешить пользователям приложения открывать папку, щелкая ссылку на веб-странице. Путь к папке находится в сети, и к ней можно получить доступ отовсюду. Я, наверное, уверен, что нет простого способа сделать это, но может я ошибаюсь?
Я ответил ниже; это обычное требование корпоративных веб-приложений, которое становится практически невозможным из-за неправильной защиты (должна быть возможность разрешить ссылки на файлы на доверенных http-страницах). Я только тщательно тестировал Windows. — Andrew Duffy
9 ответы
- Internet Explorer будет работать, если ссылка представляет собой преобразованный путь UNC ( file://server/share/folder/ ).
- Firefox будет работать, если ссылка находится в собственной искаженной форме с использованием пяти слэшей ( file://///server/share/folder ) и у пользователя есть отключил ограничение безопасности на file: ссылки на странице, обслуживаемой через HTTP. К счастью, IE также принимает искаженную форму ссылки.
- Opera, Safari и Chrome невозможно убедить открыть file: ссылка на странице, обслуживаемой через HTTP.
в IE, только если путь UNC и веб-сайт, содержащий ссылку, находятся в одном домене, то есть только во внутренней сети. — Стефан Штайгер
Я думаю, что это больше не правильно — новые версии IE, похоже, блокируют это поведение так же, как Chrome / Safari и т. Д. — ЗикЛТК
Я просто пробовал это в IE 11, и вы фактически можете открыть локальный файл, не загружая его (как при открытии уже существующего пути к файлу). Этого все еще нет в хроме. — Хохоходаун
@ Эндрю Даффи, есть ли какая-либо документация, в которой говорится, что Google Chrome блокирует такое поведение? Хотелось бы узнать об этом побольше — каламбур
URL file://[servername]/[sharename] должен открыть окно проводника для общей папки в сети.
убедитесь, что права доступа к вашей папке установлены так, что разрешен список каталогов, а затем просто укажите привязку к этой папке с помощью chmod 701 (хотя это может быть рискованно), например
убедитесь, что у вас нет index.html любого индексного файла в этом каталоге
Этот ответ работает. Часть «разрешенный список каталогов» очень важна. Если это не разрешено, вы можете включить его, но для каждого серверного приложения он разный. — Трэвис
Использование file: ///// просто не работает, если настройки безопасности установлены даже на средний уровень.
Если вы просто хотите, чтобы пользователи могли загружать / просматривать файлы *, расположенные в сети или совместно используемые, вы можете настроить виртуальный каталог в IIS. На вкладке «Свойства» убедитесь, что выбран «Общий ресурс, расположенный на другом компьютере», а «Подключиться как . » — это учетная запись, которая может видеть сетевое расположение.
Ссылка на виртуальный каталог с вашей веб-страницы (например, http://yoursite/yourvirtualdir/), и это откроет представление каталога в веб-браузере.
* Вы можете разрешить права на запись в виртуальный каталог, чтобы пользователи могли добавлять файлы, но не пробовали, и предполагать, что сетевые разрешения переопределят этот параметр.
Это актуально сегодня, поскольку Chrome и более новые версии IE будут блокировать доступ к локальным ресурсам file: // с нефайловых веб-страниц. Кроме того, его можно настроить для работы в IIS Express, хотя его необходимо добавить и запустить вручную. — Шмули
Не работает в Chrome, но другие ответы предлагают решение через плагин:
Вы также можете скопировать адрес ссылки и вставить его в новое окно, чтобы обойти безопасность. Это работает в Chrome и Firefox, но вам, возможно, придется добавить косые черты в Firefox.
Просто так и работает. Спасибо! — Никита
Немного поздно на вечеринку, но я должен был решить это для себя недавно, хотя и немного по-другому, это все равно может помочь кому-то в обстоятельствах, похожих на мои.
Я использую xampp на ноутбуке для запуска чисто локального веб-приложения в Windows. (Очень специфическая среда, которую я знаю). В этом случае я использую ссылку html на файл php и запускаю:
shell_exec('cd C:\path\to\file'); shell_exec('start .');
Откроется окно локального проводника Windows.
Многообещающе, но когда я запускаю это в Firefox, вкладка зависает. (Кажется, что сеанс перемешивается или что-то в этом роде, потому что я могу получить доступ к другим сайтам, но этот сайт кажется зависшим — даже на других вкладках!) — Стивен Р.
Я только что протестировал его в Firefox, у меня он работает, но я не могу указать папку, в которой открывать, он открывается только в корневом каталоге файла php. — Лукас Таулеалеа
Надеюсь, это когда-нибудь поможет кому-то. Я делал небольшой POC и наткнулся на это. Кнопка, onClick отображает содержимое папки. Ниже приведен HTML-код,
ответ дан 09 мар ’20, в 07:03
Chrome выдает ошибку: не разрешено загружать локальный ресурс: — Дэйв Соттимано
@Dave Sottimano Я тестировал это только сейчас. У меня работает в Google Chrome, версия 84.0.4147.135 (официальная сборка) (64-разрядная версия) — Нагараджа Дж. Б.
Я решил установить локальную веб-службу на каждом компьютере, который прослушивает порт. 9999 например, и по запросу открывает каталог локально. Мой пример экспресс-приложения node.js:
import < createServer, Server >from "http"; // server import express from "express"; import cors from "cors"; import bodyParser from "body-parser"; // other import util from 'util'; const exec = util.promisify(require('child_process').exec); export class EdsHelper < debug: boolean = true; port: number = 9999 app: express.Application; server: Server; constructor() < // create app this.app = express(); this.app.use(cors()); this.app.use(bodyParser.json()); this.app.use(bodyParser.urlencoded(< extended: true >)); // create server this.server = createServer(this.app); // setup websockets this.setup_routes(); this.listen(); console.info("server initialized"); > private setup_routes(): void < this.app.post("/open_dir", async (req: any, res: any) => < try < if (this.debug) < console.debug("open_dir"); >// get path // C:\Users\ADunsmoor\Documents const path: string = req.body.path; // execute command const < stdout, stderr >= await exec(`start "" "$"`, < // detached: true, // stdio: "ignore", //windowsHide: true, // causes directory not to open sometimes? >); if (stderr) < throw stderr; >else < // return OK res.status(200).send(<>); > > catch (error) < console.error("open_dir >> error = " + error); res.status(500).send(error); > >); > private listen(): void < this.server.listen(this.port, () =>< console.info("Running server on port " + this.port.toString()); >); > public getApp(): express.Application < return this.app; >>
Важно запускать эту службу как локальный пользователь, а не как администратор, иначе каталог может никогда не открыться.
ответ дан 05 мар ’21, в 19:03
пишу HTML вставляю картинку но она не открывается в браузере что делать .
Картинка в компе, в папке с HTML файлом)
Добавлено 2 минуты назадога в браузере видна) но просто как прямойгольничек а в нем написано «изображение» и все дальше не открывается=(((( вот код : скобки IMG SRC=»image/11.jpg» скобки
В учебнике HTML (Теги HTML — img — Атрибут src) сказано:
Синтаксис
В качестве значения принимается полный или относительный путь к файлу.
В Вашем вопросе — адрес относительный. Проверяем его по учебнику:
Значения атрибутов тегов. — Адрес
Цитирую оттуда пример относительного адреса, полностью соответствующий Вашему тексту:
manual/info.html
Если перед именем папки нет никаких дополнительных символов, вроде точек или слэша, то папка размещена внутри текущего каталога, а уже в ней располагается файл info.html.
Ваня, адрес, который Вы указали, означает, что файл 11.jpg находится не внутри текущего каталога, не «в папке с HTML файлом», как Вам было нужно!
А во вложенной в нее папке.
В соответствии с адресом, программа ищет файл картинки не в той папке — и не находит его!
Чтобы файл, находящийся в одной папке с файлом HTML, был найден, нужно написать так:
Как сказано там же в учебнике:
«Например, код означает загрузить графический файл с именем pic.gif, который располагается в той же папке, что и сама веб-страница. »
Попробуйте отредактировать свой тег и убедитесь!
P.S. Если будут возникать еще проблемы, сверяйтесь с учебником htmlbook.ru — Для тех. кто делает сайты.
Успехов!
img src=»https://otvet.mail.ru/question/kartinka.jpg» width=»184″ height=»110″ title=»Эмблема сайта»
А вообще, скачай программу nvu, горя знать не будешь) ) одно удовольствие сайты клепать