The package.json
description says it all: "Library to enable client-side code to stream potentially large files into a zipped download"
npm install downzip
// Add copy rule for downzip service worker
new CopyPlugin([
{
from: 'node_modules/downzip/dist/downzip-sw.js',
to: '.'
}
])
import DownZip from 'downzip'
// Setup downzip object
const downZip = new DownZip()
await downZip.register()
// Initialize download
const downloadId = "aaaabbbb"
const zipFileName = "downzip-file"
const files = [
{
name: 'picture1.jpg',
downloadUrl: 'http://your-download-url.com/picture1.jpg',
size: 1234 // In bytes
},
{
name: 'picture2.jpg',
downloadUrl: 'http://your-download-url.com/picture2.jpg',
size: 4567 // In bytes
}
]
const downloadUrl = await downZip.downzip(
downloadId,
zipFileName,
files
)
// Start download when user clicks the link
<a href={downloadUrl}>Click to start downloading!</a>
Can pass mapScriptUrl
function to the register
method. That function gets used by
service-worker-loader. docs
const mapScriptUrl = scriptUrl => scriptUrl.replace('localhost', "127.0.0.1")
// Setup downzip object
const downZip = new DownZip()
await downZip.register({ mapScriptUrl })
All improvements are welcome, but the main things that need to be improved at the moment are:
Please submit pull requests, I'm more than happy to merge in improvements!