一、文件和流的关系

文件(File)和流(Stream)是既有区别又有联系的两个概念。

文件 是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。
特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。

流 是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络 中、内存中或者是磁带中。

上图类似于乱码,就是文件流在浏览器中的表现形式。

二、前端处理文件流并下载(Vue)

await this.$http.request({url: `/minioDownload" />

是因为在 axios 中对后端的响应做了拦截,所以new Blob([res])中拿到的res实际上是后端接口的res.data,只不过这一层操作在全局被封装了。

而如果直接使用的$http.get().then(),并未在全局对请求进行封装拦截。所以在这里需要取得的是 res.data于是,我把new Blob([res])改成new Blob([res.data])后,问题就解决了。