背景描述
1,前端使用vue2, 后端使用ABP
2, 前端请求后端从数据库中获取二进制图片数据
3,后端获取到数据后,希望能够保存为本地文件
前端代码如下
async getMapImage() {
await GetMapImage(state.form.floor, state.form.libraryId).then((res) => {
if (res.result.list.length > 0) {
var libraryMap = res.result.list[0] // 获取数据库图片
const { mapImage } = libraryMap
var raw = window.atob(mapImage)
var rawLength = raw.length
var uInt8Array = new Uint8Array(rawLength)
for (var i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i)
}
var blob = new Blob([uInt8Array], { type: 'image/png' }) // 转成blog形式
// 保存图片
var aLink = document.createElement('a') // 创建一个超连接,用来挂载图片url
var evt = document.createEvent('HTMLEvents') // 自定义事件
evt.initEvent('click', true, true)
aLink.download = state.form.libraryId + '_' + state.form.floor + '.png' // 保存图片的名称
aLink.href = URL.createObjectURL(blob) // 挂载图片
aLink.click() // 触发超连接的点击事件
URL.revokeObjectURL(aLink.href)
} else {
state.printStyle = ''
}
})
},
效果如下

但是,我不想让它弹框,我想实现的效果是:在代码中指定路径,直接保存。
我百度了很久,都没有找到合适的方案
我尝试过,那怕使用file-saver也是有弹框,也是一样让你选择保存路径。
我的问题:
针对这种情形,请教大家有没有比较好的的方案?期待大家的指点,谢谢!