Метод showSaveDialog()
объекта dialog
асинхронно отображает диалоговое окно, в котором можно выбрать путь и название для сохранения файла. Формат метода:
const { dialog } = require('electron');
Promise<Объект> = dialog.showSaveDialog([<Ссылка на окно>, ]<Опции>)
Если в первом параметре указана ссылка на родительское окно, то диалоговое окно будет модальным. Во втором параметре указывается объект со следующими опциями (полный список см. в документации):
title
— текст заголовка окна;defaultPath
— путь к каталогу, отображаемому в окне;buttonLabel
— текст на кнопке подтверждения выбора файла или каталога;filters
— массив объектов, задающих типы файлов для ограничения выбора. Каждый объект должен содержать свойства name
(название фильтра) и extensions
(массив строк, задающих расширения файлов):filters: [
{ name: 'Мои файлы', extensions: ['txt', 'js'] },
{ name: 'Все файлы', extensions: ['*'] }
]
properties
— массив, содержащий следующие основные значения (полный список см. в документации):'showHiddenFiles'
— отображать скрытые файлы;'createDirectory'
— можно создавать новые каталоги (для MacOS).Метод showSaveDialog()
возвращает объект Promise
, содержащий объект с двумя свойствами:
canceled
— значение true
, если была нажата кнопка Отмена, и false
— в противном случае;filePath
— строка с выбранным путем. Если была нажата кнопка Отмена, то содержит пустую строку.Пример отображения диалогового окна:
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
});