補(bǔ)充:在請(qǐng)求時(shí)因?yàn)閳?bào)以下錯(cuò)誤,一般都是因?yàn)槲覀兊木W(wǎng)站是HTTPS的珠洗,而對(duì)方的鏈接是HTTP協(xié)議的溜歪,因此在A(yíng)jax或者javascript請(qǐng)求時(shí),就會(huì)報(bào)如下這種錯(cuò)誤:
>解決方法: <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
錯(cuò)誤.png
單個(gè)有url的oss鏈接许蓖,直接下載的話(huà) FileSaver.saveAs(list[0].qr_code,
${list[0].title}.jpg
) // 通過(guò)fileSaver導(dǎo)出下載圖片
封裝批量下載方法
//數(shù)據(jù)
imgesArr:[
{
url:'http://jingshipeihu.oss-cn-hangzhou.aliyuncs.com/patrol_code/20220630/ff02cca980ecd44887f0970f529847ca.jpg',
name:'first'
},
{
url:'http://jingshipeihu.oss-cn-hangzhou.aliyuncs.com/patrol_code/20220630/610dff0dd546a831dc11376a251580e5f.jpg',
name:'second'
}
]
// 邏輯
// 下載二維碼圖片并壓縮
getImgArrayBuffer(url){
return new Promise((resolve,reject) => {
//通過(guò)請(qǐng)求獲取文件blob格式
let xmlHTTP = new XMLHttpRequest()
xmlHTTP.open('GET',url,true)
xmlHTTP.responseType = "blob";
xmlHTTP.onload = function() {
if(this.status == 200 ){
// console.log(this.response)
resolve(this.response)
}else{
// console.log(this.status)
reject(this.status)
}
}
xmlHTTP.send()
})
},
// 批量下載
batchDownload(){
let zip = new JSZip()
var imgObj = {}
let promises = []
for(let obj of this.imgesArr){
const promise = this.getImgArrayBuffer(obj.url).then(data => {
zip.file(obj.name + '.png', data , {binary:true}); // 逐個(gè)添加文件
imgObj[obj.name] = data
})
promises.push(promise)
}
this.$message('正在壓縮蝴猪,請(qǐng)稍后!')
Promise.all(promises).then(async () => {
try {
const content = await zip.generateAsync({type:'blob'})
// console.log(content)
await FileSaver.saveAs(content,'壓縮圖片')
this.$message("壓縮完成")
} catch (error) {
console.log(error)
}
// zip.generateAsync({type: 'blob'}).then(content => {
// this.$message('正在壓縮膊爪,請(qǐng)稍后自阱!')
// console.log(content)
// FileSaver.saveAs(content,'壓縮圖片') // 利用file-saver保存文件 自定義文件名
// this.$message("壓縮完成")
// }).catch(res => {
// console.log(111111)
// console.log(res)
// })
})
}
}
然后再使用batchDownload方法
封裝的方法
import FileSaver from 'file-saver'
import JSZip from 'jszip'
// 單個(gè)二維碼導(dǎo)出
export const singleExportQRCode = (url,name ) =>{
// console.log(url)
// console.log(name)
if(!name){
FileSaver.saveAs(url) // 未傳入導(dǎo)出圖片名稱(chēng)
}else{
FileSaver.saveAs(url,`${name}.jpg`) // 通過(guò)fileSaver導(dǎo)出下載圖片
}
}
// 下載二維碼圖片并壓縮
function getImgArrayBuffer (url){
return new Promise((resolve,reject) => {
//通過(guò)請(qǐng)求獲取文件blob格式
let xmlHTTP = new XMLHttpRequest()
xmlHTTP.open('GET',url,true)
xmlHTTP.responseType = "blob";
xmlHTTP.onload = function() {
if(this.status == 200 ){
// console.log(this.response)
resolve(this.response)
}else{
// console.log(this.status)
reject(this.status)
}
}
xmlHTTP.send()
})
}
// 批量二維碼導(dǎo)出
export const batchExportQRCode = list => {
let zip = new JSZip()
var imgObj = {}
let promises = []
for(let obj of list){
const promise = getImgArrayBuffer(obj.qr_code).then(data => {
zip.file(obj.title + '.jpg', data , {binary:true}); // 逐個(gè)添加文件
imgObj[obj.title] = data
})
promises.push(promise)
}
// console.log(promises)
Promise.all(promises).then(async () => {
try {
const content = await zip.generateAsync({type:'blob'})
await FileSaver.saveAs(content,'壓縮圖片')
// const newDate = +new Date()
// console.log('new-',newDate)
} catch (error) {
console.log(error)
}
})
}