Vue批量下载图片
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
需求
- 点击列表中下载按钮实现下载单张图片
- 复选框勾选,点击批量下载按钮,实现下载zip
实现
在页面的script中引入依赖:
import JSZip from 'jszip'
import FileSaver from 'file-saver'
批量下载图片弹窗中代码:
const tipTitle = ref<string>('')
// 获取文件blob
const getFile = (url: any) => {
return new Promise((resolve, reject) => {
axios({
method: 'get',
url,
responseType: 'blob'
})
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err.toString())
})
})
}
// 图片批量处理成压缩包后下载
const batchPictureZip = (data: any) => {
const zip = new JSZip()
const promises = []
const cache = {}
tipTitle.value = '正在加载压缩文件...'
for (const item of data) {
const promise = getFile(item.url).then(data => {
// 下载文件, 并存成ArrayBuffer对象
zip.file(item.fileName, data, { binary: true }) // 逐个添加文件
cache[item.fileName] = data
})
promises.push(promise)
}
Promise.all(promises)
.then(() => {
zip.generateAsync({ type: 'blob' }).then((content: any) => {
tipTitle.value = '正在压缩...'
// 生成二进制流
FileSaver.saveAs(content, '文件名') // 利用file-saver保存文件 自定义文件名
tipTitle.value = '压缩完成'
ElMessage.success('下载成功')
})
})
.catch(res => {
ElMessage.warning('下载失败')
})
}
// 提交
const onSubmit = () => {
submitLoading.value = true
let params = {
clarityLevel: clarityLevel.value,
recordIds: rowInfoArray.rowInfo?.map((item: any) => {
return item.id
})
}
downloadPicture(params)
.then(res => {
submitLoading.value = false
dialogVisible.value = false
if (res.data.length == 1) {
// 下载单张图片
let url = res.data[0].url
let name = res.data[0].fileName
FileSaver.saveAs(url, name)
} else {
// 批量下载图片
batchPictureZip(res.data)
}
})
.catch(e => {
submitLoading.value = false
})
}
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)