浏览器中用JavaScript获取剪切板中的文件

本文转自我的个人网站  , 原文地址:http://www.zoucz.com/blog/2016/01/29/get-file-from-clipboard/  ,欢迎前往交流讨论

在网页上编辑内容时,有时候需要插入图片,一般的做法是:

  1. 从网络上下载图片至本地 or 截图保存至本地
  2. 在编辑器中点击图片上传按钮,选择本地文件,等待上传完成
  3. 将上传好的图片链接插入编辑器中

这样做太麻烦了,我比较喜欢的操作是开着QQ或者其他的一些截图工具,截图-粘贴 。为了这样做我们需要在浏览器中获取剪切板中的文件。chrome浏览器支持onPaste事件,事件对象中可以获取剪切板中的文件内容,代码如下:

function paste(event){
    var items = (event.clipboardData || event.originalEvent.clipboardData).items;
    var dfd=Q.defer();
    if(items.length>0 && items[0].kind==="file"){
        var blob = items[0].getAsFile();
        var reader = new FileReader();
        var filename=new Date().getTime()+".png";
        reader.onload = function(e){
            var base64=e.target.result;
            base64=base64.replace(/^data:image\/(png|jpg);base64,/, "");
            var path=writeImg(filename,base64);
            dfd.resolve(path);
        };
        reader.readAsDataURL(blob);
    }
    else{
        dfd.resolve();
    }
    return dfd.promise;
}

当这种场景发生在纯浏览器环境时,writeImg方法也可以选择不保存到本地,而是通过http上传到一个文件服务器,此时可以直接用blob对象上传而不用读取。

其中Q是一个promise库,writeImg是一个使用node写入本地文件系统(nw.js下运行),见我的blog编辑器FileReader可以把blob对象读取为dataurl(实际上就是用base64表示的uri),ArrayBuffer等格式的数据:

时间: 2024-08-25 21:49:24

浏览器中用JavaScript获取剪切板中的文件的相关文章

VBScript设置和获取剪切板内容的方法

Automation中经常需要程序和剪切板交互,还在使用键盘一个一个input?内容多的话,岂不是太慢了,使用剪切板的黏贴复制,so fast,so easy--具体需要调用Microsoft Forms 2.0 Object Library的对象和方法,用它轻松实现设置和获取剪切板的内容,下面写了2个设置和获取剪切板内容的函数,需要的时候直接调用~  'operating clipboard Function setClipboard(str)     'setting clipboard's

MFC - 获取剪切板上的内容

1 // 获取剪切板上的字符串 2 CString CLogic::fnGetStrFromClipboard(void) 3 { 4 CString strTmp; 5 strTmp.Empty(); 6 if ( ::OpenClipboard(NULL) ) 7 { 8 UINT nFormat = (sizeof(TCHAR) == sizeof(WCHAR) ? CF_UNICODETEXT:CF_TEXT); 9 HGLOBAL hClip = GetClipboardData(nF

javascript获取当前url中的参数

javascript获取当前页面url中的参数可以使用location的search方法,获取到的是url中?后面的部分,例如http:localhost:8080/Manager/index.jsp?id=1 使用location的search方法可以获取到字符串?id=1;想要获取?后面的键值对可以使用substring方法对其进行截取,截取后获得id=1;需要获得id的值,可以使用split()方法对其进行拆分,拆分表达式为"=".下面看具体例子: window.onload =

javascript获取当前url中的參数

javascript获取当前页面url中的參数能够使用location的search方法,获取到的是url中?后面的部分,比如http:localhost:8080/Manager/index.jsp? id=1 使用location的search方法能够获取到字符串?id=1;想要获取?后面的键值对能够使用substring方法对其进行截取,截取后获得id=1;须要获得id的值,能够使用split()方法对其进行拆分,拆分表达式为"=".以下看详细样例: window.onload

使用JavaScript获取url(request)中的参数

这次是使用JavaScript来获取url(request)中的参数 在日常页面编写的过程中为了方便操作在<script>中通过使用window.location.href="要跳转的页面?参数1="+值1+"&参数2="+值2  来进行页面跳转并传值. 那么在跳转过去的页面怎样在<script>中获取到传过来的参数呢? 下面是小编的一个案例: //参数传出页面 window.location.href = "Framese

JavaScript获取网址栏中的参数

如图,获取网站中问号后的参数值.

跨浏览器用javascript获取窗口的位置和大小

跨浏览器获取位置 var leftX = typeof window.screenLeft == 'number' ? window.screenLeft : window.screenX; var topY = typeof window.screenTop == 'number' ? window.screenTop : window.screenY; firefox浏览器不支持screenLeft和scrennTop,但是支持screenX和screenY:ie浏览器支持screenLef

javascript获取页面路径中的参数

1 function getUrlParam() { 2 //获取连接地址 3 var url = document.location.toString(); 4 //分隔开连接,用?把传的值取出来 5 var arrObj = url.split("?"); 6 //创建一个空对象 7 var result = {}; 8 //判断连接里面是不是有值,如果有则执行下面操作 9 if (arrObj.length > 1) { 10 //取出所有传的值 11 var arrPar

【JAVA】Java开发使用技巧_获取当前项目中某个文件路径

下面是一个小实例,注释也很清晰,但足以说明问题. 1.实例代码 1 public class TestMain { 2 3 public static String PROJECT_NAME = "/Test/"; 4 public static String FILE_NAME = "src/com/test/NewFile.xml"; 5 6 public static void main(String[] args) throws IOException {