certd/ui/certd-ui/src/api/api.exports.js

41 lines
1.1 KiB
JavaScript

import { request } from './service'
import _ from 'lodash-es'
function arrayToMap (arr) {
if (arr && arr instanceof Array) {
const map = {}
_.forEach(arr, item => {
map[item.key] = item
})
return map
}
return arr
}
function transfer (options) {
options.accessProviders = arrayToMap(options.accessProviders)
}
export default {
exportsToZip (options) {
transfer(options)
return request({
url: '/exports/toZip',
data: { options },
method: 'post',
responseType: 'blob' // 重点在于配置responseType: 'blob'
}).then(res => {
console.log('res', res)
const filename = decodeURI(res.headers['content-disposition'].replace('attachment;filename=', '')) // 由后端设置下载文件名
const blob = new Blob([res.data], { type: 'application/zip' })
const a = document.createElement('a')
const url = window.URL.createObjectURL(blob)
a.href = url
a.download = filename
const body = document.getElementsByTagName('body')[0]
body.appendChild(a)
a.click()
body.removeChild(a)
window.URL.revokeObjectURL(url)
})
}
}