aierda 2023-05-11 19:27 采纳率: 72.1%
浏览 148
已结题

vue如何将Blob保存在固定的路径下面

背景描述
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 = ''
      }
    })
  },

效果如下

img

但是,我不想让它弹框,我想实现的效果是:在代码中指定路径,直接保存。

我百度了很久,都没有找到合适的方案

我尝试过,那怕使用file-saver也是有弹框,也是一样让你选择保存路径。

我的问题:
针对这种情形,请教大家有没有比较好的的方案?期待大家的指点,谢谢!

  • 写回答

8条回答 默认 最新

  • 急速光粒 2023-05-12 08:45
    关注
    获得7.00元问题酬金

    这个是web浏览器的安全策略限制,不能直接操作本地文件,你的需求涉及到操作本地文件,web方式肯定无法实现的,只能尽量考虑贴近满足你的需求的方式,或者考虑使用桌面软件辅助实现。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 创建了问题 5月11日