图片下载

1. 普通url数据下载

示例:

https://wework.qpic.cn/wwpic/306595_0iIcXxBHTkKvsxV_1610689000/0

https://allpro.saas.top/1610704815878.jpg

解决方案:

// 我们可以将下载地址借助Blob转换成二进制,然后,作为a标签的href属性,配合download属性,实现下载
const link = document.createElement('a');
const url =  imageUrl;  // 要下载的路径
// 这里是将url转成blob地址,
fetch(url).then(res => res.blob()).then(blob => {
// Blob {size: 746, type: "text/html"}
  link.href = URL.createObjectURL(blob);
  console.log(link.href);
  link.download = 'picName';
  document.body.appendChild(link);
  link.click();
})

2. base64格式数据下载

解决方案:

// 添加base64前缀

const base64Url = 'data:image/png;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFQ==';
const link = document.createElement('a');
link.href = base64Url;
link.download = 'picName';
link.click();

3. 当下载的图片含有动态数据时,需要我们使用canvas绘制并下载下来。

解决方案:使用vue-canvas-poster-yufan插件。

4.当需要批量下载图片时,可以采用下载压缩包的方式。

解决方案:将图片数据处理成arraybuffer类型或bold类型,使用jszip下载

上一篇:vue XLSX 组件使用


下一篇:JDBC核心技术总结三