当前位置: 首页 > news >正文

createObjectURL的部分使用讲解

URL.createObjcetURL的部分详解

文章目录

  • URL.createObjcetURL的部分详解
    • 1. 为什么要使用createObjectURL
    • 2. createObjectURL的基本用法
    • 3. 转换后的文件进行展示或下载
      • 展示
      • 下载

首先,想记录一下这点是因为之前关于pdf文件的下载和预览,后端返回工作流时的处理,里面有关于createObjectUrl的使用,所以这里想专门对此进行一个详细的解释

1. 为什么要使用createObjectURL

它是js的一个函数,可以将Blob、file等二进制文件转换成浏览器可以直接显示的URL地址,从而进行展示、下载等操作,例如之前一个文章中关于pdf的预览和下载,后端返回的工作流就需要进行转换

2. createObjectURL的基本用法

创建一个Blob对象后,通过createObjectURL方法将Blob对象转换为URL地址

//这里先解释一下Blob, Blob就类似于是一个二进制大对象,可以以二进制数据的形式存储图片、音频、视频等文件
//可以通过构造函数创建一个Blob对象,可传的参数有两个,第一个参数是要转换的包含数据的数组,第二个参数是数据的MIME类型
//写法const blob=new Bolb(['要转换的文件'],{type:'转换文件的类型'})

常见的MIME类型:

在这里插入图片描述

更多的MIME类型可以参考https://www.w3school.com.cn/media/media_mimeref.asp

//这里我们以后端返回的工作流pdf文件为例
const blob=new Blob([response.data],{type: 'application/pdf')
const url=URL.createObjectURL(blob)

3. 转换后的文件进行展示或下载

展示

例如是图片的预览

<img :src='{{url}}' />
//这里的url就是通过createObjectURL转换得到的url
//如果是像上文提到的pdf可以通过创建dom,将url赋值给src,或者通过window.open(url)打开新窗口进行预览

下载

下载文件我们就要利用到 a标签上的download属性

<a :href='{{url}}' download='下载的文件名' >下载文件</a>
//也可以通过js的写法
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'pdfdocument.pdf');
document.body.appendChild(link);
link.click();
document.body.removeChild(link);

要注意的是,使用完URL后,需要手动释放,否则可能造成内存泄露等问题
URL.revokeObjectURL(url)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 锅总浅析防火墙
  • 三线程分别打印1、2、3顺序执行10次
  • 游戏加速器推荐 网游加速器排行榜
  • 快速将网站从HTTP升级为HTTPS
  • Git代码冲突怎么处理?
  • gptpdf深度解析:开源文档处理技术全攻略
  • AI人工智能分析王楚钦球拍被踩事件的真相
  • [Day 43] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • Linux:Xshell相关配置及前期准备
  • python-素数回文数的个数(赛氪OJ)
  • BlockingQueue简介
  • 分享c语言中一些实用的函数2
  • Unity复制对象时让私有变量也被复制的简单方法
  • 预算管理一体化系统技术标准V2.0 — 第一章-概述
  • cdn 内容分发网络
  • [iOS]Core Data浅析一 -- 启用Core Data
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • gitlab-ci配置详解(一)
  • Mocha测试初探
  • Nacos系列:Nacos的Java SDK使用
  • Node + FFmpeg 实现Canvas动画导出视频
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue-cli3搭建项目
  • 创建一个Struts2项目maven 方式
  • 复习Javascript专题(四):js中的深浅拷贝
  • 京东美团研发面经
  • 前端技术周刊 2019-02-11 Serverless
  • 我的面试准备过程--容器(更新中)
  • 一起参Ember.js讨论、问答社区。
  • 正则与JS中的正则
  • postgresql行列转换函数
  • 带你开发类似Pokemon Go的AR游戏
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​虚拟化系列介绍(十)
  • #if和#ifdef区别
  • #pragma once与条件编译
  • (13)Hive调优——动态分区导致的小文件问题
  • (2)nginx 安装、启停
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)逆序输出字符串
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (小白学Java)Java简介和基本配置
  • (正则)提取页面里的img标签
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .gitignore文件_Git:.gitignore
  • .net refrector
  • .NET 药厂业务系统 CPU爆高分析
  • .net程序集学习心得
  • .net和php怎么连接,php和apache之间如何连接
  • .NET企业级应用架构设计系列之开场白
  • .net与java建立WebService再互相调用
  • ::前边啥也没有