sindresorhus / multi-download

Download multiple files at once in the browser

Home Page:https://sindresorhus.com/multi-download/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

multi-download

Download multiple files at once in the browser

It works by abusing the a-tag download attribute.

Install

npm install multi-download

Note: This package targets the latest versions of Chrome, Firefox, and Safari.

Usage

<button id="download-button" data-files="unicorn.jpg rainbow.jpg">Download</button>
import multiDownload from 'multi-download';

document.querySelector('#download-button').addEventListener('click', event => {
	const files = event.target.dataset.files.split(' ');
	multiDownload(files);
});
import multiDownload from 'multi-download';

// With jQuery
$('#download-button').on('click', () => {
	const files = $(this).data('files').split(' ');
	multiDownload(files);
});
import multiDownload from 'multi-download';

// With Blob
const unicorn = URL.createObjectURL(new Blob(['๐Ÿฆ„'], {type: 'text/plain'}));
const goat = URL.createObjectURL(new Blob(['๐Ÿ'], {type: 'text/plain'}));
multiDownload([unicorn, goat]);

API

multiDownload(urls, options?)

Returns a Promise that resolves when all the downloads have started.

Note that there's a delay of 1 second between each download.

urls

Type: string[]

The URLs to files you want to download. Can be absolute or relative, even cross-origin.

options

Type: object

rename

Type: Function

A function that accepts an object containing url, index, and urls properties and is expected to return the new filename.

<button id="download-button" data-files="unicorn.jpg rainbow.jpg">Download</button>
import multiDownload from 'multi-download';

document.querySelector('#download-button').addEventListener('click', event => {
	const files = event.target.dataset.files.split(' ');
	multiDownload(files, {
		rename: ({url, index, urls}) => 'New name.pdf'
	});
});

Caveats

If the user has enabled "Ask where to save each file before downloading" in Chrome, it will only download the first file.

About

Download multiple files at once in the browser

https://sindresorhus.com/multi-download/

License:MIT License


Languages

Language:HTML 70.2%Language:JavaScript 29.8%