// 文件下载
import JSZip from "jszip"
import FileSaver from "file-saver"
import { post } from 'axios'
// 单文件下载
async function singleDownload(url,file) {
try {
const res = await post(url,{
filePath: file.filePath,
fileId:file.fileId
},{
responseType: 'arraybuffer'
})
if(!res){return}
let headers = res.headers
let blob = new Blob([res.data],{
type: headers['content-type']
})
if('msSaveBlob' in navigator) {
window.navigator.msSaveBlob(blob,file.fileName)
}
let url = window.Url.createObjectURL(blob)
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.download = file.fileName
document.body.appendChild(link)
link.click()
} catch(e){}
}
// 打包下载
function mostDownload(fileList,url) {
const zip = new JSZip()
let promises = []
fileList.forEach(item => {
const promise = post(url,{
filePath: file.filePath,
fileId:file.fileId
},{
responseType: 'arraybuffer'
}).then(res => {
const file_name = item.fileName
zip.file(file_name,res.data,{
binary:true
})
})
promises.push(promise)
})
Promise.all(promises).then(res => {
zip.generateAsync({
type: 'blob'
}).then(content => {
FileSaver.saveAs(content,"打包下载.zip")
})
})
}
export const util = {
singleDownload,
mostDownload
}