Учебник по Electron.js

Окно для сохранения файла

Метод showSaveDialog() объекта dialog асинхронно отображает диалоговое окно, в котором можно выбрать путь и название для сохранения файла. Формат метода:

const { dialog } = require('electron');
Promise<Объект> = dialog.showSaveDialog([<Ссылка на окно>, ]<Опции>)

Если в первом параметре указана ссылка на родительское окно, то диалоговое окно будет модальным. Во втором параметре указывается объект со следующими опциями (полный список см. в документации):

filters: [
   { name: 'Мои файлы', extensions: ['txt', 'js'] },
   { name: 'Все файлы', extensions: ['*'] }
]

Метод showSaveDialog() возвращает объект Promise, содержащий объект с двумя свойствами:

Пример отображения диалогового окна:

ipcMain.on('event-show-dialog', async (e) => {
   let result = await dialog.showSaveDialog(win, {
      title: 'Заголовок окна',
      defaultPath: 'C:\\book',
      buttonLabel: 'Сохранить файл',
      filters: [
         { name: 'Мои файлы', extensions: ['txt', 'js'] },
         { name: 'Все файлы', extensions: ['*'] }
      ],
      properties: ['showHiddenFiles', 'createDirectory']
   });
   console.log(result);
   // { canceled: false, filePath: 'C:\\book\\e1\\test2.js' }
});

Можно также воспользоваться методом showSaveDialogSync() объекта dialog, который выполняет операцию синхронно, блокируя процесс. Формат метода:

const { dialog } = require('electron');
<Результат> = dialog.showSaveDialogSync([<Ссылка на окно>, ]<Опции>)

Все параметры аналогичны одноименным параметрам метода showOpenDialog(). Метод showSaveDialogSync() возвращает строку с выбранным путем или значение undefined, если была нажата кнопка Отмена. Пример отображения окна внутри обработчика события:

ipcMain.on('event-show-dialog', (e) => {
   let result = dialog.showSaveDialogSync(win, {
      title: 'Заголовок окна',
      defaultPath: 'C:\\book',
      buttonLabel: 'Сохранить файл',
      filters: [
         { name: 'Мои файлы', extensions: ['txt', 'js'] },
         { name: 'Все файлы', extensions: ['*'] }
      ],
      properties: ['showHiddenFiles', 'createDirectory']
   });
   console.log(result); // C:\book\e1\test2.js
});