Simplified file downloads for your Electron app
- One function call instead of having to manually implement a lot of boilerplate.
- Saves the file to the users Downloads directory instead of prompting.
- Bounces the Downloads directory in the dock when done. (macOS)
- Handles multiple downloads
- Shows badge count (macOS, linuxOS) and download progress. Example on macOS:
$ npm install --save electron-dl
This is probably what you want for your app.
const {app, BrowserWindow} = require('electron');
require('electron-dl')();
let win;
app.on('ready', () => {
win = new BrowserWindow();
});
This can be useful if you need download functionality in a reusable module.
const {app, BrowserWindow, ipcMain} = require('electron');
const {download} = require('electron-dl');
ipcMain.on('download-btn', (e, args) => {
download(BrowserWindow.getFocusedWindow(), args.url)
.then(dl => console.log(dl.getSavePath()))
.catch(console.error);
});
electronDl.download(window, url, [options]): Promise<DownloadItem>
Type: BrowserWindow
Window to register the behavior on.
Type: string
URL to download.
Type: boolean
Default: false
Show a Save As…
dialog instead of downloading immediately.
Note: Only use this option when strictly necessary. Downloading directly without a prompt is a much better user experience.
Type: string
Default: User's downloads directory
Directory to save the file in.
Type: string
Default: downloadItem.getFilename()
Name of the saved file.
This option only makes sense for electronDl.download()
.
Type: string
Default: Download Error
Title of the error dialog. Can be customized for localization.
Type: string
Default: The download of {filename} was interrupted
Message of the error dialog. {filename}
is replaced with the name of the actual file. Can be customized for localization.
Type: Function
Optional callback that receives a number between 0
and 1
representing the progress of the current download.
Type: boolean
Default: false
Reveal the downloaded file in the system file manager, and if possible, select the file.
To add to this library, you can manually run an instance of electron
npm start
...or you can use TDD (test driven development)
npm test
npm run test:watch
- electron-debug - Adds useful debug features to your Electron app
- electron-context-menu - Context menu for your Electron app
- electron-store - Save and load data like user preferences, app state, cache, etc
- electron-unhandled - Catch unhandled errors and promise rejections in your Electron app
MIT © Sindre Sorhus