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

jsp可以使用iframe_使用 JavaScript Object URL,可以处理图像、音频和视频

c56896b0ebd8b3d1077ee000bbddd180.png

来源:https://medium.com

作者:John Au-Yeung

许多Web应用程序需要在前端处理文件输入,或者将文件上传到后端。

在这篇文章中,我们来看看如何使用Object URL来引用可以使用DOM文件对象引用的数据。

使用object URLs

我们可以调用 URL.createObjectURL 来从文件对象中创建一个URL字符串对象,方法如下。

const objectURL = window.URL.createObjectURL(fileObj);

然后,我们可以在URL字符串对象上调用 revokeURL 以从内存中释放URL资源:

URL.revokeObjectURL(objectURL);

使用Object URLs 显示图片

例如,我们可以使用 createObjectURL 方法在 img 元素中显示选定的图像文件,如下所示。

首先,我们编写以下HTML:

<input type="file"  accept="image/*">
<img />

然后,我们可以编写以下代码来侦听文件输入的change事件,然后使用 createObjectURL 设置 img 元素的 src 属性,如下所示:

const fileInput = document.querySelector('input');
const img = document.querySelector('img');
fileInput.onchange = () => {
const file = fileInput.files[0];
img.src = URL.createObjectURL(file);
img.onload = () => {
URL.revokeObjectURL(img.src);
}
}

在上面的代码中,我们在选定的文件对象 file 上调用了 createObjectURL 来创建可以设置为 src 属性值的URL。然后,在加载图像时,我们调用 revokeObjectURL 清除用于创建URL的资源。

使用Object URLs 显示PDF

我们还可以使用Object URL来显示PDF。我们使用相同的 crateObjectURL 方法,但将其设置为 iframe 的URL而不是img元素。

例如,我们可以编写以下HTML:

<input type="file" >
<iframe>

然后,我们可以将 src 属性设置为PDF对象URL的iframe,如下所示:

const fileInput = document.querySelector('input');
const iframe = document.querySelector('iframe');
fileInput.onchange = () => {
const file = fileInput.files[0];
const objUrl = URL.createObjectURL(file);
iframe.setAttribute('src', objUrl);
URL.revokeObjectURL(objUrl);
}

我们使用 createObjectURL 和上传的PDF文件来创建Object URL字符串。然后我们可以为其设置 src 属性。然后,PDF将显示在Firefox的iframe中。

将 Object URLs 与其他文件类型一起使用

Object URL也可以与其他文件类型一起使用。例如,我们可以选择一个视频文件并通过编写以下代码来播放它。首先,我们编写以下HTML代码:

<input type='file' />
<video controls />

然后,要播放从文件输入中选择的视频文件,我们编写:

const fileInput = document.querySelector('input');
const video = document.querySelector('video');
fileInput.onchange = async () => {
const file = fileInput.files[0];
const objUrl = URL.createObjectURL(file);
video.src = objUrl;
await video.play();
URL.revokeObjectURL(objUrl);
}

在上面的代码中,我们有一个异步函数,该函数从选定的视频文件创建Object URL。然后,将Object URL设置为video元素的src属性。

然后,我们调用视频 play 以播放视频。play 方法返回一个Promise,因此我们必须添加一个await 等待该Promise的解决。

完成此操作后,我们可以在Object URL上调用 revokeObjectURL 以释放资源。

总结

我们可以创建Object URL并将其设置为各种元素的src属性,以显示或播放它们。在大多数浏览器中,它都可以处理图像,音频和视频。


大礼包更新了!

新增慕课网实战课程《Webpack4.0从基础到实战 手把手带你掌握新版》,大礼包目前被屏蔽....。

单独获取该课程:

  • 链接: https://pan.baidu.com/s/1Uvf65FIl6ATEVW7QBnEX-A 

  • 提取码: ugik

07ead2661dff731d02d7c62febb40ebb.png

公众号中回复“前端大礼包”五个字即可获取!拉勾教育还有一门Webpack课程,只要18元,可以看看哦。

ba573f4b5525c2cf6cbfa9c9a4f5a3b9.png 推荐阅读
  • JavaScript中的reduce()的5个用例

  • React和Vue语法并列比较:状态管理

  • 思想实验:如何在Vue中使localStorage具有响应式?

  • 下载文件并使用JavaScript将其压缩在浏览器中

  • 实战|使用CSS Paint API动态创建与分辨率无关的可变背景

  • JavaScript ES6代理的实际用例

361d14d4bd91f406340043583ff6400a.png

如果对你有帮助,还可以在看、留言、转发,这是对作者最大的帮助

相关文章:

  • python xlrd_Python xlrd库常用操作汇总
  • python如何调用文件_python中调用不同文件夹的py文件
  • python windows窗口开发_微软上线《在Windows上使用Python进行开发》教程
  • quartz 动态添加job_spring boot Quartz基于持久化存储的动态管理
  • 学python还是php_米凯seo: 到底是学Python、PHP还是Ruby?
  • python命名空间更改_python命名空间
  • vb 查找word中的字符 单元格坐标_Word天,原来查找和替换功能这么强大
  • python网课答案董付国_Python 董付国
  • 苹果手机运行python_JavaScript_iPhone手机上搭建nodejs服务器步骤方法,一、为在ios上面运行,编译jxco - phpStudy...
  • vba 怎么选择网页中的下拉框_书法、国画中怎么选择用纸?
  • python编写手机自动化脚本_使用appium+python编写手机游戏功能自动化
  • pythonrandom函数用法_Python之np.random.permutation()函数的使用
  • python显示文字框_自定义悬停框Plotly:Python以适应文本
  • seay svn漏洞利用工具_roptool 一种帮助您编写二进制漏洞利用的工具
  • springcloud全家桶_Spring cloud 微服务组件 mica 2.0.5GA 发布,添加对sentinel、undertow指标收集。...
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [Vue CLI 3] 配置解析之 css.extract
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • IndexedDB
  • Meteor的表单提交:Form
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Shadow DOM 内部构造及如何构建独立组件
  • storm drpc实例
  • Tornado学习笔记(1)
  • Yii源码解读-服务定位器(Service Locator)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 写代码的正确姿势
  • 积累各种好的链接
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #Java第九次作业--输入输出流和文件操作
  • $.ajax,axios,fetch三种ajax请求的区别
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (力扣)1314.矩阵区域和
  • (强烈推荐)移动端音视频从零到上手(上)
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (原)Matlab的svmtrain和svmclassify
  • (转)Google的Objective-C编码规范
  • (转)菜鸟学数据库(三)——存储过程
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .a文件和.so文件
  • .gitattributes 文件
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • @Resource和@Autowired的区别
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [CISCN2019 华东北赛区]Web2
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件