Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在vue中显示带有axios的图像?

如何在vue中显示带有axios的图像?
EN

Stack Overflow用户
提问于 2022-09-28 13:15:01
回答 1查看 191关注 0票数 0

我有一个带有axios的GET请求,并获得一个.png文件,并希望在我的模板中显示这一点。我不能使用路径url,因为每次图像都是不同的。

这是我的fastapi路线。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from io import BytesIO
from fastapi.responses import Response


@app.get("/image", response_class=Response)
def load_image():
    ...
    buffer = BytesIO()
    img.save(buffer, format="PNG")

    return Response(content=buffer.getvalue(), media_type="image/png")

这是vue组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
export default {
  name: "Example",
  data() {
    return {
      image: null;
    };
  },
  methods: {
    async loadImage() {
      const url = "/image";
      const response = await $axios.get(url, { responseType: "arraybuffer" });
      if (response.status == 200) {
        const base64string = btoa(String.fromCharCode(...new Uint8Array(response.data)));
        console.log(base64string); // -> this is a empty string
        this.image = 'data:image/png;base64,' + base64string;
      }
  },
  mounted() {
    this.loadImage();
  },
};
</script>

<template>
  <div>
    <img :src="image" title="Image" />
  </div>
</template>
EN

回答 1

Stack Overflow用户

发布于 2022-09-28 15:13:14

你可以..。

通过将blob传递给axios,将blob转换成blob,将blob转换为带有src的blob(使用src中的blobToData函数-- base64数据作为图像)

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const app = Vue.createApp({
  data() {
    return {
      imageSrc: null,
    };
  },
  methods: {
    async loadImage() {
      const url =
        "https://images.unsplash.com/photo-1664300067908-84e8beb52a8f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwyNXx8fGVufDB8fHx8&auto=format&fit=crop&w=500&q=60";
      const response = await axios.get(url, { responseType: "blob" });
      if (response.status == 200) {
        const base64data = await blobToData(response.data);
        this.imageSrc = base64data;
      }
    },
  },
  mounted() {
    this.loadImage();
  },
});

app.mount("app");

function blobToData(blob) {
  return new Promise((resolve) => {
    const reader = new FileReader()
    reader.onloadend = () => resolve(reader.result)
    reader.readAsDataURL(blob)
  })
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://unpkg.com/vue@next/dist/vue.global.prod.js"></script>
<script src="https://unpkg.com/axios@0.27.2/dist/axios.min.js"></script>
<app>
 <img :src="imageSrc" v-if="imageSrc"/>
</app>

正如克里斯指出的,你也可以.

通过使用axios

  • convert将{ responseType: "arraybuffer" }传递给base64数据,
  • 将数据作为数组缓冲区获得,方法是向base64数据

中添加内容类型。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const app = Vue.createApp({
  data() {
    return {
      imageSrc: null,
    };
  },
  methods: {
    async loadImage() {
      const url =
        "https://images.unsplash.com/photo-1664300067908-84e8beb52a8f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwyNXx8fGVufDB8fHx8&auto=format&fit=crop&w=500&q=60";
      const response = await axios.get(url, { responseType: "arraybuffer" });
      if (response.status == 200) {
        const b64 = btoa(String.fromCharCode(...new Uint8Array(response.data)));
        const imgData = "data:" + response.headers['content-type'] + ";base64," + b64;
        this.imageSrc = imgData;
      }
    },
  },
  mounted() {
    this.loadImage();
  },
});

app.mount("app");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://unpkg.com/vue@next/dist/vue.global.prod.js"></script>
<script src="https://unpkg.com/axios@0.27.2/dist/axios.min.js"></script>
<app>
 <img :src="imageSrc" v-if="imageSrc"/>
</app>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73887871

复制
相关文章
git命令中带有特殊符号如@
使用带用户密码clone的方式: git clone https://username:password@remote 当username和password中含有特殊符号会导致出错, 因为为http的请求,所以需要将特殊符号encode成url格式的 java使用: String c = java.net.URLEncoder.encode(".","utf-8"); System.out.println(c); 源文档 <http://blog.csdn.net/qq1142003960/article/
千往
2018/01/24
2.1K0
vue中axios的封装
5. 封装post, get 请求 (此示例没有封装,可根据项目情况而定,因为封装后,对于一些特殊接口设置不是太灵活,需要我们项目没有选择封装,如果请求方法比较单一的,可以考虑封装)
用户9914333
2022/07/21
1.3K0
vue中axios的封装
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
大龄老码农-昊然
2021/05/13
3.4K0
vue中axios的封装
Vue中Axios的封装管理
Axios 封装 定义 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 特性 支持Promise API 拦截请求和响应 转换请求数据和响应数据 自动转换JSON数据 客户端支持 XRSF 回归正题 在Vue 项目开发中,我们与接口打交道最多了,来通过接收后端接口返回来的数据,最后我将这些接口数据完美的呈现到网页上。 同时,与接口打交道那么就会用到网络请求,与 Vue 结合的网络请求库有哪些呢? vue-resource axios 官方推荐 fetc
程序员海军
2021/10/08
9650
Vue中Axios的封装管理
Vue中Axios的封装管理
Axios 封装 定义 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 特性 支持Promise API 拦截请求和响应 转换请求数据和响应数据 自动转换JSON数据 ##### 客户端支持 XRSF 回归正题 在Vue 项目开发中,我们与接口打交道最多了,如何来优雅的使用Axios变得尤为重要了。 通常我们通过客户端向后端发送请求来接收接口数据,然后将这些接口数据完美的呈现到网页上。 同时,与接口打交道那么就会用到网络请求,与 Vue 结合的网络请求库
程序员海军
2021/10/11
1.3K0
Vue中Axios的封装管理
如何使用Vue.js和Axios来显示API中的数据
Vue.js是一个用于构建用户界面的前端JavaScript框架。 它的设计从头开始逐步采用,并与其他图书馆或现有项目完美集成。 这使它非常适合小型项目以及与其他工具和库一起使用的复杂单页应用程序。
子润先生
2021/06/15
8.8K0
vue中拆分封装axios
1、在src目录下建network文件用于配置axios`。 2、在network里面先建一个config.js文件
江一铭
2022/06/16
2680
Vue2封装axios,axios在Vue.cli中的使用
在src目录下新增一个目录utils,并新增一个js文件http.js,用以实现axios的封装
SingYi
2022/07/13
1.1K0
Vue2封装axios,axios在Vue.cli中的使用
Vue axios
https://github.com/Coxhuang/vue-axios-demo
Autooooooo
2020/11/09
1.7K0
Vue axios
如何在 Linux 中创建带有特殊字符的文件?
在 Linux 系统中,创建文件是进行各种操作的基础。有时候,我们需要创建带有特殊字符的文件,例如包含空格、特殊符号或非ASCII字符的文件。本文将详细介绍在 Linux 中如何创建带有特殊字符的文件,以便您能够轻松地完成这样的任务。
网络技术联盟站
2023/08/03
8070
如何在 Linux 中创建带有特殊字符的文件?
如何在 Linux 中创建带有特殊字符的文件?
在 Linux 系统中,创建文件是进行各种操作的基础。有时候,我们需要创建带有特殊字符的文件,例如包含空格、特殊符号或非ASCII字符的文件。本文将详细介绍在 Linux 中如何创建带有特殊字符的文件,以便您能够轻松地完成这样的任务。
网络技术联盟站
2023/07/14
7170
如何在 Linux 中创建带有特殊字符的文件?
html使用vue axios,使用 Vue和axios
昨天写完了博客以后,有人就在我的博客下面留言说现在不是使用了Axios了吗?我赶紧再把Axios的例程给补上,并且做一个更新。
全栈程序员站长
2022/11/17
1.5K0
Vue3中使用axios
axios是一个基于Promise的HTTP请求库,它可以在浏览器和Node.js中使用。axios的功能非常请打,支持Promise API、可以拦截请求和响应、可以转换请求和响应数据、支持取消请求、可以自动转换JSON数据等。
九仞山
2023/10/14
1.8K0
Vue3中使用axios
【vue学习】vue axios
【vue学习】vue axios 安装vue axios npm install --save axios vue-axios 安装依赖 npm install 在main.js中引入 在项目中使用axios模块 import Vue from 'vue' import axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios,axios) 发送请求 解决跨域问题 <!-- spring-mvc里的内容--> <!-- 解决A
Swingz
2020/12/18
5090
如何在AI Studio数据可视化图像中显示汉字
AI Studio是一个非常好用的数据科学在线实验平台,不论是教学、学习还是开发,都可以使用。但是,下面的缺憾未免成为了珍珠上的一点瑕疵。
老齐
2020/05/15
3.4K0
如何在AI Studio数据可视化图像中显示汉字
Vue笔记:使用 axios 中 this 指向问题
在vue中使用axios做网络请求的时候,会遇到this不指向vue,而为undefined。
朝雨忆轻尘
2019/06/19
8030
Vue笔记:使用 axios 中 this 指向问题
Vue 的axios的使用
axios直接进行访问会出现跨域问题,需要配置代理了。(前提是服务器没有设置禁止跨域的权限问题)
我不是费圆
2020/09/22
8360
【vue学习】axios
文章出自https://www.jianshu.com/p/d771bbc61dab
kirin
2020/05/09
1.3K0
Vue-Axios
Axios是一个开源的可以用在浏览器端和NodeJs的异步通信框架,她的主要作用就是实现AJAX异步通信,其功能特点如下:
张小驰出没
2021/04/22
8160
Vue使用axios
3、使用   mounted: function () {     // 按需引入     axios.get(‘https://api.coindesk.com/v1/bpi/currentprice.json’).then(response => {       console.log(‘按需引入’)       console.log(response.data)     }).catch(error => console.log(error))   },
苦咖啡
2019/12/10
1.2K0

相似问题

如何在vue axios post中传递带有数组的图像?

25

如何通过axios发送带有Vue filepond的图像?

119

删除带有Axios、Vue、Laravel的对象

11

Vue JS中带有axios的松弛API CORS错误

25

如何在vue中显示静态图像?

238
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文