下载图片到本地,多个图片压缩后下载到本地

17 篇文章 1 订阅

单个图片的下载:
第一种

async downLoadImage() {
    let response = await fetch('https://img-home.csdnimg.cn/images/20231127111739.png');
    let data = await response.blob();
    let url = window.URL.createObjectURL(data);
    let link = document.createElement('a');
    link.href = url;
    link.download = 'image.jpg';
    link.click();
}

第二种,支持旧浏览器

downloadImage() {
  const imageUrl = 'https://img-home.csdnimg.cn/images/20231127111739.png';
  const xhr = new XMLHttpRequest();
  xhr.open("GET", imageUrl, true);
  xhr.responseType = "blob";
  xhr.onload = function () {
    if (xhr.status === 200) {
      const url = window.URL.createObjectURL(xhr.response);
      const link = document.createElement("a");
      link.href = url;
      link.download = "image22222.png";
      link.click();
    } else {
      console.error("图片下载失败");
    }
  };
  xhr.send();
}

多张图片的下载,需要压缩
下面是用的vue2技术:

import JSZip from "jszip";
import { saveAs } from "file-saver";
import axios from 'axios'

  // 下载文件
function getFile (url) {
  return new Promise((resolve, reject) => {
    axios2.get(url, { responseType: 'arraybuffer' })
      .then(response => {
        resolve(response.data)
      })
      .catch(error => {
        console.log(`Failed to download ${url}`, error);
        return null; // return null when request fails
      })
  })
}

export function downFileAll(images, packName) {
      const zip = new JSZip()
      const cache = {}
      const zip = new JSZip()
      const cache = {}
      const promises = images.map(url => getFile(url).then(data => {
        const arr_name = url.split("/");
        let file_name = arr_name[arr_name.length - 1];
        zip.file(file_name, data, {
          binary: true
        });
        cache[file_name] = data;
        return data; 
      }));
    
      return Promise.all(promises).then(() => {
        return zip.generateAsync({ type: "blob" });
      }).then(content => {
        saveAs(content, packName);
      });
}

调用方法:
imageUrl1:是图片的url地址
downloadImages([‘imageUrl1’, ‘imageUrl2’, ‘imageUrl3’, …], ‘packName’);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xingchen678

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值