vue下载文件流图片

beat365官方为什么不能提款 2025-09-21 14:48:43 admin 阅读 913

我的开发情景是:点击下载-----向后台发出请求-----后台返回图片的文件流开发目标是:点击下载-----即可下载图片

我的代码:

axios({

method: 'post',

url: 'UCConfig/QRcode',

data: {

channel_user_id: row.channel_user_id,

},

responseType: 'blob'

}).then(res => {

const blob = new Blob([res.data])

const fileName = 'qudaoerweima.jpg'

const dlink = document.createElement('a')

if ('download' in document.createElement('a')) { // 非IE下载

const dlink = document.createElement('a')

dlink.download = fileName

dlink.style.display = 'none'

dlink.href = URL.createObjectURL(blob)

document.body.appendChild(dlink)

dlink.click()

URL.revokeObjectURL(dlink.href) // 释放URL 对象

document.body.removeChild(dlink)

} else { // IE10+下载

navigator.msSaveBlob(blob, fileName)

}

});

提醒和解释:

responseType: 'blob' 是设置返回值为blob类型。res.data 指后台返回图片的文件流const fileName = 'qudaoerweima.jpg' 改变后缀名等于改变下载文件的后缀名,即把.jpg换成.png那么下载的就是 .png 类型的图片,换成 .pdf ,下载的就是 pdf 文件。由此可以推断出,此种方法亦适合下载 pdf 等其它文件流。dlink 是模拟a标签点击下载用的。百度时发现其他人有出现因为 mock.js 而不能正常下载的情况----- mockjs 初始化的时候给拦截响应设置了 responseType:'' ,所以可以尝试下屏蔽掉 mockjs 。找到这行代码 require('@/mock') 并注释,重启项目再进行测试。

mock模块会影响原生的ajax请求,使得服务器返回的blob类型变成乱码

额外扩展下vue使用 axios 请求后台接口的两种方式:

使用别名进行请求( axios.get 或者 axios.post等)

axios.post('/user', {

firstName: 'Fred',

lastName: 'Flintstone'

})

.then(function (response) {

console.log(response);

})

.catch(function (error) {

console.log(error);

});

通过向 axios 传递相关配置来创建请求

// 发送 POST 请求

axios({

method: 'post',

url: '/user/12345',

responseType: 'blob',

data: {

firstName: 'Fred',

lastName: 'Flintstone'

}

});

了解更多axios:https://www.kancloud.cn/yunye/axios/234845

相关文章

佛教为何在印度灭亡了?看这一篇文章就够了

已结账发现凭证有误怎么更改

魔兽6.2要塞船坞全攻略:战舰船员及装备列表_手机网易网

酸奶水果沙拉