属性
说明
 
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对象的一些学习分享,希望在实际应用上能对大家有所帮助。也希望大家多多支持脚本之家。
您可能感兴趣的文章:
