js中关于Blob对象的介绍与使用(2)

属性 说明
kind   一般为 string 或者 file  
type   具体的数据类型,例如具体是哪种类型字符串或者哪种类型的文件,即 MIME-Type  

方法

方法 参数 说明
getAsFile     如果 kind 是 file ,可以用该方法获取到文件  
getAsString   function(str)   如果 kind 是 string ,可以用该方法获取到字符串str  

在原型上还有一些其他方法,不过在处理剪切板操作的时候一般用不到了。

type 介绍

一般 types 中常见的值有 text/plain 、 text/html 、 Files 。

值 说明
text/plain   普通字符串  
text/html   带有样式的html  
Files   文件(例如剪切板中的数据)  

有了上面这些方法,我们可以解决第二个问题即获取到剪切板上的数据。

document.addEventListener('paste', function (e) { console.info(e); var cbd = e.clipboardData; for(var i = 0; i < cbd.items.length; i++) { var item = cbd.items[i]; console.info(item); if(item.kind == "file"){ var blob = item.getAsFile(); if (blob.size === 0) { return; } console.info(blob); } } });

最后我们需要将获取到的数据渲染到网页上。

其实这个本质上就是一个类似于上传图片本地浏览的问题。我们可以直接通过HTML5的File接口将获取到的文件上传到服务器然后通过讲服务器返回的url地址来对图片进行渲染。也可以使用fileRender对象来进行图片本地浏览。

fileRender对象简介

从Blob中读取内容的唯一方法是使用 FileReader。

FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。

方法名 参数 描述
readAsBinaryString   file   将文件读取为二进制编码  
readAsText   file,[encoding]   将文件读取为文本  
readAsDataURL   file   将文件读取为DataURL  
abort   (none)   终端读取操作  

FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

事件 描述
onabort   中断  
onerror   出错  
onloadstart   开始  
onprogress   正在读取  
onload   成功读取  
onloadend   读取完成,无论成功失败  

通过上面的方法以及事件,我们可以发现,通过readAsDataURL方法及onload事件就可以拿到一个可本地浏览图片的DataURL。

最终代码如下:

document.addEventListener('paste', function (e) { console.info(e); var cbd = e.clipboardData; var fr = new FileReader(); var html = ''; for(var i = 0; i < cbd.items.length; i++) { var item = cbd.items[i]; console.info(item); if(item.kind == "file"){ var blob = item.getAsFile(); if (blob.size === 0) { return; } console.info(blob); fr.readAsDataURL(blob); fr.on<x>load=function(e){ var result=document.getElementById("result"); //显示文件 result.innerHTML='<img src="' + this.result +'" alt="" />'; } } } });

这样我们就可以监听到用户的粘贴操作,并且将用户粘贴的图片文件实时的渲染到网页之中了。

总结

以上是我对Blob对象的一些学习分享,希望在实际应用上能对大家有所帮助。也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d240a72d7b948f336462b9cd811d8504.html