Closed weiweidong1993 closed 4 years ago
@weiweidong1993 不清楚是什么意思,服务端返回下载地址就可以了吧?这和你如何实现下载没有关系吧
不用下载地址下,直接调用接口下载,后端接口如下:
前端代码如下:
点击下载返回数据如下:
@weiweidong1993 目前还不支持,计划在2.0.4版本api配置中添加responseType属性(默认为json) 配置方式
{
name: 'download',
desc: 'download',
method: 'GET',
path: '/download',
responseType: 'blob'
}
调用
// 因为原样返回服务端数据所以第三个参数要是true
this.$api('app/download', {}, true).then(data => {
const url = window.URL.createObjectURL(new Blob([data]))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', 'file.png')
document.body.appendChild(link)
link.click()
}).catch(err => {
console.error(err)
})
服务端demo(node.js)
async download () {
const filePath = 'h://微信图片_20190827145947.jpg'
this.ctx.attachment(filePath)
this.ctx.set('Content-Type', 'application/octet-stream')
this.ctx.set('Access-Control-Allow-Origin', 'http://localhost:8080')
this.ctx.set('Access-Control-Allow-Credentials', true)
this.ctx.body= fs.createReadStream(filePath)
}
你看这样能不能满足需求?
试了一下 不太行,下载的文件打不开,而且只有15B o(╥﹏╥)o
@weiweidong1993 升级了版本吗?2.0.4的 我本地测试是可以的 检查一下服务端吧
更新以后就好啦,谢谢大佬
为大佬打call,为大佬点赞:为你唱歌~~
`为你写诗 为你静止
为你做不可能的事
为你我学会弹琴写词
为你失去理智
为你写诗 为你静止
为你做不可能的事
为你弹奏 所有情歌的句子
我忘了说 最美的是你的名字
爱情 是一种怪事
你的笑容是唯一宗旨
爱情 是一种本事
我在你心里什么位子
为你我做了太多的傻事
第一件就是为你写诗`
目前用标签直接拼接href可以实现文件下载,但是用api-creator就不行,返回的数据是json格式的,请问是要在this.$api里面设置吗