Как открыть проводник Windows на NWJS?

Сегодня я попытался открыть проводник Windows в определенном месте с помощью NWJS и разрешить пользователю открывать любой файл. Программное обеспечение должно продолжать работать после открытия ярлыка. Проблема в том, что все, что я нахожу, не работает должным образом.

Путь быстрого доступа находится в строке, доступной для s.shortcut.

Я пытался :

  1. showOpenFilePicker(s.shortcut) который открывает средство выбора файлов, но не позволяет пользователю открывать какой-либо файл и не может быть открыт в определенном месте, кроме файлов по умолчанию (документы, изображения, рабочий стол и т. д.).
  2. window.open("file://" + s.shortcut) который открывает веб-файловый проводник в самом программном обеспечении, закрывая программу при закрытии проводника и не позволяя открыть файл.
  3. window.open("file://" + s.shortcut, "explorer", "popup") открывает его в веб-файловом проводнике, который не закрывает программу при выходе, но не позволяет открыть ни один файл, а только загружает его

Я не могу найти никаких других вещей, которые будут работать. Также обратите внимание, что я использую NWJS, который имеет некоторый доступ к компьютеру пользователя.

Заранее благодарим вас за любую помощь или редактирование.

json named s ... JSON, будучи строкой, не имеет свойства shortcut — вы имели в виду, что s — это так называемый объект, у которого есть свойство shortcut? showOpenFilePicker не принимает никаких аргументов, и нет метода браузера, который мог бы делать то, что вы хотите... возможно, есть способ nodejs, но я с ним не знаком
Jaromanda X 14.03.2024 10:26

исправление, showOpenFilePicker ПРИНИМАЕТ аргумент - возможно, документы помогут

Jaromanda X 14.03.2024 10:27

Спасибо @JaromandaX за ваши комментарии. Я отредактировал сообщение, ярлык фактически хранится в виде строки в json. Кроме того, да, showOpenFilePicker() принимает аргументы, но не такие, я просто опубликовал здесь то, что пробовал. Я посмотрю пакеты nodejs, чтобы проверить, может ли что-нибудь мне помочь.

Daxelarne 14.03.2024 10:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
117
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я нашел способ на узле, при необходимости вы можете использовать пакет 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.

Daxelarne 15.03.2024 13:06

Фрагмент 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.

Другие вопросы по теме