Открытие проводника Windows из локального хтмл-файла

Кто подскажет как с локальной страницы(файл.htm, лежащий в папке расширения к Хрому) открыть эту самую папку расширения в Виндовском проводнике? Или так нельзя сделать?

Вот, например, скачиваешь какой-то файл Хромом. Там такая внизу окна появляется полоса и в ней процесс скачивания. Если кликнешь правой клавишей мыши на изображение скачиваемого файла и выберешь пункт контекстного меню “Показать в папке”(или как там оно), то открывается папка в проводнике Винды и в ней выделяется этот файл . Я хочу сделать то же самое, только кликнув по кнопочке. Мне не нужно писать что-то в файл или даже читать его. Просто открыть папку, а если можно ещё и файлик выделить. Уточняю: речь идёт только о Хроме, другие браузеры не интересуют.

Самое близкое что я знаю это открытие ссылок с протоколом search.

Откроется не файндер, а программа поиска. Через параметр crumb можно сузить место поиска до папки.


Думаю вариант открытия ссылок с протоколом file:// ты уже рассмотрел. Но все равно опишу, больше для читающих. Этотоже не 1-в-1 что требуется. Ссылки с протоколом file показывают список файлов по указанному пути, но внутри браузера.


И последнее, не решение, но направление куда копать: возможны варианиты с запуском java servlet-ов и открытием проводника уже через джавовский АПИ. Понятное дело, что нужно чтобы джава была установлена на компьютерах.

Дмитрий, спасибо за ответ. Пытаюсь копать в направлении API доступа к файловой системе. Пока что удалось нарыть вот такие заклинания, но это способно открывать т.н. “хорошо известные” директории:

desktop : Каталог рабочего стола пользователя, если таковой существует.
documents : Каталог, в котором обычно хранятся документы, созданные пользователем.
downloads : Каталог, в котором обычно хранятся загруженные файлы.
music : Каталог, в котором обычно хранятся аудиофайлы.
pictures : Каталог, в котором обычно хранятся фотографии и другие неподвижные изображения.
videos : Каталог, в котором обычно хранятся видео/фильмы.

Как ему подсунуть другой адрес пока не понимаю…

<a href="#null" id="op_ext_folder">открыть папку</a>
document.querySelector('#op_ext_folder').addEventListener('click', async function(e){
e.preventDefault();
const fileHandle = await self.showOpenFilePicker({
  //startIn: chrome.runtime.getURL('')
  startIn: 'documents'
});
});

Закомментированный код вызывает ошибку:

Uncaught (in promise) TypeError: Failed to execute ‘showOpenFilePicker’ on ‘Window’: Failed to read the ‘startIn’ property from ‘FilePickerOptions’: The provided value ‘chrome-extension://meifaampjgdgccfeehjlabjajijbohed/’ is not a valid enum value of type WellKnownDirectory.

Это апи про чтение файловой системы и запись в нее. Там нет про открытие программ типа эксплорера. Самое близкое что можно теоретически сделать через это апи это открыть окно для выбора файла.

Тут есть экстеншен который делает именно то что тебе надо. Но для реализации работы ему нужно устанавливать nodejs и менять регистр. Это подсказывает что скорее всего нет простой реализации.

А вот тут есть экстеншен который снова похож но другой. Разрешает открывать файлы по ссылке с протоколом file. Придется поискать в коде расширения как именно оно это делает. https://chrome.google.com/webstore/detail/enable-local-file-links/nikfmfgobenbhmocjaaboihbeocackld?hl=en

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

Если запустить код, который я приложил в своём сообщении, то можно увидеть, что окно выбора файла открывается. К сожалению, открываются только директории из приведённого списка “хорошо известных”. Мне достаточно просто открыть нужную мне папку, пускай “для выбора файла”. Всё равно дальше по файлу будет правый клик и выбор приложения для открытия файла. Я не стремлюсь редактировать файл или читать его, нужно просто открыть не Видео или Музыку, а именно директорию chrome-extension://meifaampjgdgccfeehjlabjajijbohed. Я пишу расширение, немножко облегчающее работу моей жене с онлайн-каталогом запчастей, нужно просто открыть папку этого расширения, а дальше она(жена) сама сделает всё, что нужно. Просто женщинам обычно сложно запомнить какие-то места в компе кроме Рабочего стола или Моих документов )) Грубо говоря, я хочу сделать аналог обычного виндовского ярлыка для папки, только в теле странички.

Устанавливать же какие-то ещё расширения для работы моих расширений, node.js и тому подобное, думаю, будет перебором. Проще на бумажке написать ей что открыть и на монитор прилепить ))

1 лайк