vue如何解析后台传回的文件流

本文介绍了如何在axios的请求拦截器中识别文件下载接口并设置响应类型为blob,随后详细讲解了如何将blob转换为base64以便于处理和展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置axios的响应类型

请求拦截器中增加代码,判断如何调用的接口是文件下载接口
将响应类型设置成blob
config.responseType = 'blob'

二、将获取回来的文件流转换成base64

blobToBase64(blob) {
	return new Promise((resolve, reject) => 
	const fileReader = new FileReader();
	fileReader.onload = e => {
		resolve(e.target.result);
	}
	fileReader.readAsDataURL(blob);
	fileReader.onerror = () => {
		reject(new Error(文件流异常'));
	}
}
### 实现 Vue 前端与 Spring Boot 后端的接口调用和数据交互 #### 使用 Axios 进行 HTTP 请求 为了实现 Vue 和 Spring Boot 的通信,通常采用 RESTful API 接口的形式。Axios 是一个基于 Promise 的 HTTP 客户端,用于发起网络请求[^3]。 在 Vue 组件中安装并配置 Axios: ```bash npm install axios --save ``` 接着可以在项目中的 `main.js` 文件引入 Axios 并设置全局默认参数: ```javascript import axios from 'axios'; // 设置基础 URL 为后端服务地址 axios.defaults.baseURL = 'http://localhost:8080/api/'; ``` #### 创建用户管理系统的示例代码 假设有一个简单的用户管理系统,其中包含获取用户列表的功能。以下是具体的实现方式: ##### Spring Boot 控制器定义 在 Spring Boot 应用程序里编写控制器类来处理来自前端的请求: ```java @RestController @RequestMapping("/users") public class UserController { @GetMapping("") public ResponseEntity<List<User>> getUsers() { List<User> users = userService.getAllUsers(); return new ResponseEntity<>(users, HttpStatus.OK); } } ``` 这段 Java 代码展示了如何响应 GET 方法请求,并返回所有的用户对象给客户端应用[^2]。 ##### Vue 组件内的方法 而在 Vue 方面,则可以通过如下所示的方法去调取上述的服务端接口: ```html <template> <div id="app"> <!-- 显示用户列表 --> <ul v-if="loading">Loading...</ul> <ul v-else> <li v-for="(user, index) in users" :key="index">{{ user.name }}</li> </ul> </div> </template> <script> export default { data () { return { loading: true, users: [] }; }, mounted () { this.fetchData(); }, methods: { fetchData () { const path = '/users'; axios.get(path) .then((response) => { // JSON responses are automatically parsed. this.users = response.data; this.loading = false; }) .catch(() => { console.log('There was an error fetching the users!'); }); } } }; </script> ``` 此部分 JavaScript 展示了当页面加载完成后自动触发一次对 `/users` 路径下的 GET 请求操作,成功接收到服务器传回的数据后将其赋值给本地变量 `users` 来渲染视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值