Git Product home page Git Product logo

electron-dl's Introduction

electron-dl Build Status

Simplified file downloads for your Electron app

Why?

  • 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 & Linux only) and download progress. Example on macOS:

Install

$ npm install electron-dl

Usage

Register it for all windows

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();
});

Use it manually

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);
});

API

It can only be used in the main process.

electronDl([options])

electronDl.download(window, url, [options]): Promise<DownloadItem>

window

Type: BrowserWindow

Window to register the behavior on.

url

Type: string

URL to download.

options

saveAs

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.

directory

Type: string
Default: User's downloads directory

Directory to save the file in.

filename

Type: string
Default: downloadItem.getFilename()

Name of the saved file.

This option only makes sense for electronDl.download().

errorTitle

Type: string
Default: Download Error

Title of the error dialog. Can be customized for localization.

errorMessage

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.

onProgress

Type: Function

Optional callback that receives a number between 0 and 1 representing the progress of the current download.

openFolderWhenDone

Type: boolean
Default: false

Reveal the downloaded file in the system file manager, and if possible, select the file.

Development

After making changes, run the automated tests:

$ npm test

And before submitting a pull request, run the manual tests to manually verify that everything works:

npm start

Related

License

MIT © Sindre Sorhus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.