下载文件
原创大约 1 分钟
下载文件
get 请求 1
axios
.get(url, {
responseType: 'blob',
})
.then(function (response) {
let blob = new Blob([response.data], { type: response.type })
let downloadElement = document.createElement('a')
let href = window.URL.createObjectURL(blob) //创建下载的链接
downloadElement.href = href
downloadElement.download = fileName //下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() //点击下载
document.body.removeChild(downloadElement) //下载完成移除元素
window.URL.revokeObjectURL(href) //释放掉blob对象
console.info('文件下载成功!')
})
.catch(function (error) {
console.info('文件下载失败!')
})
get 请求 2
function (url, query = {}, options = {}) {
let token = tokenObj.getToken()
const queryStr = queryString.stringify(
{
...query,
token,
_: new Date().getTime(),
x-Lange:'en', // 语言标识
},
options
)
if (queryStr) {
url = url + '?' + queryStr
}
if (options.open === 'self') {
window.location.href = url
} else {
window.open(url)
}
}
post 请求 1
axios({
method: 'POST',
url,
responseType: 'blob',
}).then((res) => {
const contentDisposition = res.headers['content-disposition']
if (contentDisposition) {
const index = contentDisposition.indexOf('=') + 1
let fileName = contentDisposition.substring(index)
fileName = decodeURIComponent(fileName)
var aTag = document.createElement('a')
var blob = new Blob([content], { type: res.type })
aTag.download = fileName
aTag.href = URL.createObjectURL(blob)
aTag.click()
URL.revokeObjectURL(blob)
} else {
console.log('error', '文件名为空')
}
})
下载图片
export function downloadImg2({ url, name = 'image.jpg' } = {}) {
const aEl = document.createElement('a')
getBase64ImageByUrl(url).then((res) => {
aEl.href = res
aEl.download = name
document.body.appendChild(aEl)
aEl.click()
document.body.removeChild(aEl)
})
}
function getBase64Image(img) {
console.log(img.width, img.height)
var canvas = document.createElement('canvas')
canvas.width = img.width
canvas.height = img.height
var ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0)
console.log(canvas.toDataURL)
var dataURL = canvas.toDataURL('image/png')
return dataURL
}
function getBase64ImageByUrl(url) {
var image = new Image()
image.src = url
return new Promise((resolve) => {
image.onload = function () {
const base64 = getBase64Image(image)
resolve(base64)
}
})
}