Download
Save images and video files, keeping the file name across origins.
download adds a download button on images and video files. It is off by default, and embeds never get one.
Live demo. Click a thumbnail to open it.
<Lightbox
download={{
filename: (slide, index) => `photo-${index + 1}.jpg`,
onError: (error, slide) => report(error, slide.src),
}}
{...props}
/>Prop
Type
How files are saved
- Same origin. Saved directly through a hidden
<a download>. - Another origin. Browsers ignore the
downloadattribute across origins, so the file is fetched with CORS and saved from a blob, which keeps its name. - When that fails. If the server sends no CORS headers, returns an HTTP error or the network fails, the file opens in a new tab instead.
labels.downloadErroris announced through arole="status"region andonErroris called. Nothing assumes the server allows direct downloads.
Per slide
{ src: "/photos/harbour-1600.jpg", download: "/originals/harbour.tiff", downloadName: "harbour.tiff" }
{ src: "/photos/private.jpg", download: false }slide.downloadpoints the button at another URL, for example the original file instead of a resizedsrc.slide.download = falsehides the button on that slide.- A URL with a
javascript:or other non-web scheme hides the button too.data:URLs are allowed.
The file name comes from slide.downloadName, then download.filename(slide, index), then the last segment of the URL.