vue中预览pdf文件流+new Blob() 将文件流转换为文件+URL.createObjectURL 的使用方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

一、vue中预览pdf文件流代码

downloadUnitLjzljdPdf(row) {
      let url = `/kzsny/download/download${row.uid}`;
      u.h.get(url, { responseType: 'blob' }).then((res) => {

        // 将获取到的PDF文件流转换为Blob对象
        let blob = new Blob([res], { type: 'application/pdf' });
        // 创建一个URL对象
        let urlTwo = URL.createObjectURL(blob);
        // 设置PDF源为创建的URL
        window.open(urlTwo, '_blank');
      });
    }

2.使用 new Blob() 将文件流转换为文件

1. new Blob()的定义与用途
new Blob()是JavaScript中的一个构造函数,用于创建Blob对象。Blob(Binary Large Object)是一种表示不可变、原始数据的类文件对象。它可以存储二进制数据或文本数据,并且可以代表各种类型的数据,例如图片、音频、视频、压缩文件等。

2. new Blob()如何使用
要使用new Blob()将文件流转换为文件,首先需要获取文件流的数据。在浏览器环境中,可以使用Fetch API或XMLHttpRequest来获取文件流。假设我们已经获取到了文件流数据并保存在fileStream变量中,下面是将文件流转换为文件的代码示例:

const file = new Blob([fileStream]);
上述代码通过调用new Blob()构造函数,传入包含文件流数据的数组参数,创建了一个Blob对象,保存在file变量中。现在,file变量就是表示文件的Blob对象了。

3. 文件的MIME类型与new Blob()文件转换的关系
文件的MIME类型指的是文件的媒体类型,例如image/jpeg表示JPEG图片、audio/mp3表示MP3音频等。new Blob()方法在转换文件时并不会自动推断文件的MIME类型,而是需要开发者明确指定。

通常情况下,我们可以通过浏览器提供的API获取文件的MIME类型,例如使用File API中的type属性。如果已知文件的MIME类型,可以将其作为第二个参数传递给new Blob()构造函数,如下所示:

const file = new Blob([fileStream], { type: 'image/jpeg' });
上述代码将文件流数据和一个包含MIME类型的配置对象作为参数传递给new Blob()构造函数。这样,在创建Blob对象时就会设置正确的MIME类型。

4. 如何使用MIME类型使new Blob()转换出正确的文件类型
要确保new Blob()正确转换出文件的类型,首先需要确定文件的真实MIME类型。可以通过浏览器的开发者工具或相关的文件信息API来获取文件的MIME类型。

一旦获取到了文件的MIME类型,只需将其作为第二个参数传递给new Blob()构造函数即可,如前面示例所示。

需要注意的是,如果未指定MIME类型或指定的MIME类型不正确,浏览器可能无法正确处理Blob对象,导致文件无法正常预览或下载。

new Blob参考这个链接 https://www.cnblogs.com/weichen913/p/17539621.html
更多MIME参考这个链接https://www.w3school.com.cn/media/media_mimeref.asp

2.URL.createObjectURL 的使用方法

1. 简介和使用场景
它是js的一个函数,可以将Blob、file等二进制文件转换成浏览器可以直接显示的URL地址,从而进行展示、下载等操作。创建一个新的对象URL,该对象URL可以代表某一个指定的file对象或者bold对象。URL对象是硬盘(SD卡等)指向的一个文件路径,如果我们做文件上传的时候,想在没有上传服务器端的情况下看到上传图片的效果图的时候。

就可以通过var url = window.URL.createObjectURL(files[0]);获得一个http格式的url路径,这个时候就可以设置img中的src进行显示了。

例如关于pdf的预览和下载,后端返回的工作流就需要进行转换或者点击图片预览图片的时候,用于生成一个临时的预览地址 。
2. createObjectURL的基本用法
创建一个Blob对象后,通过createObjectURL方法将Blob对象转换为URL地址

//这里我们以后端返回的工作流pdf文件为例
const blob=new Blob([response.data],{type: 'application/pdf')
const url=URL.createObjectURL(blob)
 // 生成预览图片地址:通过js将文件信息在本地电脑内存中变成一个预览地址临时拿去使用显示
console.logurl); // blob:http://localhost:8080/5262140a-02db-4106-b651-b2fc98a5e8e9
要注意的是,使用完URL后,需要手动释放,否则可能造成内存泄露等问题
URL.revokeObjectURL(url)
### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值