Javascript 如何通过s3中的url压缩图像

Javascript 如何通过s3中的url压缩图像,javascript,zip,Javascript,Zip,我尝试了以下功能,但它只允许我下载一张照片, 所以我正在寻找一种方法来压缩图像并下载它 但是我在stackoverflow中搜索了很多帖子,没有找到正确的方法 函数下载照片(){ 让文件=[{ 图片:“abc.com/image/01” }, { 图片:“abc.com/image/02” }] file.map(文件=>{ const link=document.createElement('a'); link.href=file.image; link.setAttribute('downl

我尝试了以下功能,但它只允许我下载一张照片,
所以我正在寻找一种方法来压缩图像并下载它

但是我在stackoverflow中搜索了很多帖子,没有找到正确的方法

函数下载照片(){
让文件=[{
图片:“abc.com/image/01”
}, {
图片:“abc.com/image/02”
}]
file.map(文件=>{
const link=document.createElement('a');
link.href=file.image;
link.setAttribute('download','sample`)
document.body.appendChild(链接);
link.click();
link.parentNode.removeChild(link);
})
}

您需要一个ZIP存档生成库。您可以使用以流式方式快速执行此操作以节省内存

从'fflate'导入{Zip,ZipPassThrough};
从“streamSaver”导入streamSaver;
函数下载照片(){
让文件=[{
图像:“https://example.com/image1"
}, {
图像:“https://example.com/image2"
}];
const-zip=new-zip();
const rs=新的可读流({
启动(控制器){
zip.ondata=(错误、日期、最终)=>{
如果(错误){
控制器错误(err);
}否则{
控制器排队(dat);
if(final)controller.close();
}
}
}
});
rs.pipeTo(streamSaver.createWriteStream('example.zip');
返回Promise.all(files.map)(异步元=>{
常量流=(等待获取(meta.image)).body;
const file=new-ZipPassThrough(meta.image);
zip.add(文件);
const reader=stream.getReader();
while(true){
const{value,done}=wait reader.read();
如果(完成){
push(新的Uint8Array(0),true);
返回;
};
file.push(值);
}
})).然后(()=>zip.end());
}

这将使下载流化,从而最大限度地提高性能。

请不要尝试完全针对您的情况,但基本上您可以从这里开始。唯一的区别是,您从正常链接获取图像,而不是从
base64获取图像。
是否有帮助?