javascript - Vue.js,下载后动态显示图像

标签 javascript html node.js vue.js download

我正在使用 Vue.js/Node.js (express.js)
并尝试在通过 GET 请求(由 Axios)从服务器下载图像后显示图像。

该文件是由用户上传的,因此我们不知道它的详细信息(长度等)。
并且下载后需要展示给用户。

服务器收到下载请求后,只需从磁盘获取文件并将其放入响应中:

(req, res) => {
    ...
    res.download(file)
}

到目前为止,我在客户端中做到了这一点,
下载文件后,我将其转换为 Base64 字符串:

Buffer.from(response.data, 'binary').toString('base64')

(GET请求的响应)

并尝试在我的模板上显示它,如下所示:

:src="'data:image/png;base64,' + myBase64string"

而且根本没有成功!
非常感谢任何建议、建议、帮助等。

最佳答案

new Vue({
  el: '#app',
  
  data () {
    return {
      src: null
    }
  },
 
  mounted () {
    let self = this
    fetch("https://thumbs.dreamstime.com/z/freely-accessible-examination-exposition-mosaic-ar-figures-mosaic-st-petersburg-russia-june-freely-accessible-119320551.jpg")
    .then((response) => {
      response.blob().then(blobResponse => {
        let reader = new FileReader();
        reader.readAsDataURL(blobResponse); 
        reader.onloadend = function() {
          let base64data = reader.result; 
          let img = document.createElement('img')
          img.src = base64data  
          self.$refs['img-container'].appendChild(img)
        }
      })
    })
  }
})
img {
  height: 300px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <div ref="img-container"></div>
</div>

关于javascript - Vue.js,下载后动态显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60844783/

相关文章:

javascript - Jquery UI CheckBox Button - 按钮和点击兼容性问题 - ie8

javascript - 自定义 Jasmine Matcher 中已解决和已拒绝的 promise

javascript - ApexCharts - 在 "Simple Donut Chart"中添加一个数字

node.js - apt-get install nodejs-legacy npm 无法识别

javascript - 使用 Meteor.js + React.js 进行服务器端路由

javascript - 连接来自不同服务器的 socket.io 时出错

javascript - 使用 css、jquery 或 smth 水平翻转选择框

javascript - 获取被 jQuery 更改后的 HTML 元素的内容

node.js - 异步文件追加

python - 无法在 MacOS : 'zsh: command not found: nvm' 上使用 nvm install