Сегодня я попытался открыть проводник Windows в определенном месте с помощью NWJS и разрешить пользователю открывать любой файл. Программное обеспечение должно продолжать работать после открытия ярлыка. Проблема в том, что все, что я нахожу, не работает должным образом.
Путь быстрого доступа находится в строке, доступной для s.shortcut.
Я пытался :
showOpenFilePicker(s.shortcut) который открывает средство выбора файлов, но не позволяет пользователю открывать какой-либо файл и не может быть открыт в определенном месте, кроме файлов по умолчанию (документы, изображения, рабочий стол и т. д.).window.open("file://" + s.shortcut) который открывает веб-файловый проводник в самом программном обеспечении, закрывая программу при закрытии проводника и не позволяя открыть файл.window.open("file://" + s.shortcut, "explorer", "popup") открывает его в веб-файловом проводнике, который не закрывает программу при выходе, но не позволяет открыть ни один файл, а только загружает егоЯ не могу найти никаких других вещей, которые будут работать. Также обратите внимание, что я использую NWJS, который имеет некоторый доступ к компьютеру пользователя.
Заранее благодарим вас за любую помощь или редактирование.
исправление, showOpenFilePicker ПРИНИМАЕТ аргумент - возможно, документы помогут
Спасибо @JaromandaX за ваши комментарии. Я отредактировал сообщение, ярлык фактически хранится в виде строки в json. Кроме того, да, showOpenFilePicker() принимает аргументы, но не такие, я просто опубликовал здесь то, что пробовал. Я посмотрю пакеты nodejs, чтобы проверить, может ли что-нибудь мне помочь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я нашел способ на узле, при необходимости вы можете использовать пакет nodejs open-file-explorer, выполнив:
const openExplorer = require('open-file-explorer');
openExplorer(s.shortcut, err => {
if (err) {
console.info(err);
}
else {
//Do Something
}
});
NW предоставляет отличные средства выбора файлов и каталогов без каких-либо ограничений, так зачем же вам использовать урезанный showOpenFilePicker?
Для доступа к локальной файловой системе используйте:
Средство выбора файлов с определенным местоположением для запуска...
<input type = "file" nwworkingdir = "/home/path/">
Откройте средство выбора файла изображения...
<input type = "file" accept = "image/*" onchange = "">
Выбор нескольких файлов для загрузки и т. д.
<input type = "file" multiple>
Диалоговое окно «Сохранить как..» для сохранения файлов...
<input type = "file" nwsaveas = "filename.txt">
Средство выбора каталога (папки)...
<input type = "file" nwdirectory>
Примечание. Вы можете динамически изменять специальные атрибуты (nwsaveas/nwworkingdir) с помощью...
File_Picker_ID.setAttribute('nwsaveas','logo.png');
File_Picker_ID.setAttribute('nwworkingdir','C:/');
Онлайн-документация...
https://nwjs.readthedocs.io/en/latest/References/Changes%20to%20DOM/
Чтобы решить вашу конкретную проблему, я загружаю любой видимый файл с диска в iframe...
<input type = "file" id = "Open" accept = "audio/*,video/*,image/*,text/plain,text/html,application/pdf" nwworkingdir = "C:\" onchange = "if (this.value!==''){AddNewTab(this.value.replace(/\/g,'/'),0,true); this.value='';}">
AddNewTab() — это моя функция, которая создает iframe и устанавливает выбранный путь к файлу в качестве источника iframe, но самая важная часть — это то, что нам нужно заменить обратные косые черты на прямые.
Итак, вместо этого для пути к файлу...
"file://" + s.shortcut <--- Btw, should be 3 f-slashes file:///
Использовать это...
s.shortcut.replace(/\/g,'/')
Надеюсь, это поможет.
Хай, спасибо за ответ. Однако, как я уже сказал, я не хочу загружать файл в программное обеспечение, я хочу открыть редактор Windows по умолчанию по определенному пути без его привязки к программному обеспечению. file:// или file:/// ничего не меняет и открывает только в веб-просмотре/iframe, а не в редакторе Windows.
Фрагмент HTML5 с использованием Font Awesome:
<div id = "file_open" class = "YOUR_COOL_STYLE" onclick = "openFileDialog(this)"><i class = "fa fa-file"></i></div>
В конце файла HTML5, но перед тегом скрипта:
<!-- Dialogs -->
<div>
<input style = "display:none;" id = "fileDialog" type = "file" /> <!-- This is for selecting a file with path. -->
<input style = "display:none;" id = "directoryDialog" type = "file" nwdirectory nwdirectorydesc = "Please select a folder"/> <!-- That explains itself. -->
</div>
Javascript:
function openFileDialog(caller) {
chooseFile('#fileDialog');
}
Теперь у вас есть путь и имя файла, и вы можете открыть его в своем веб-приложении или в редакторе по вашему выбору. Обычно сервер Express.js работает для обслуживания такого контента. Оттуда вы можете открыть редактор или запустить процесс с помощью Python.
json named s... JSON, будучи строкой, не имеет свойстваshortcut— вы имели в виду, чтоs— это так называемый объект, у которого есть свойствоshortcut?showOpenFilePickerне принимает никаких аргументов, и нет метода браузера, который мог бы делать то, что вы хотите... возможно, есть способ nodejs, но я с ним не знаком