文件下载相关

// 文件下载
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

}

 

posted @ 2020-07-14 19:08  毛栗的demo  阅读(125)  评论(0)    收藏  举报