• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

HTML5 canvas 实现本地文件上传预览功能

JAVA web前端中文站 2年前 (2017-05-28) 906次浏览 未收录 0个评论

在以前,要用 web 来实现图片上传预览功能必须借助插件或者 flash 来实现。但是现在我们可以借助 HMTL5 的 canvas 来实现这个功能。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

例如下面的效果

HTML5 canvas 实现本地文件上传预览功能

实现该功能很简单,首先我们要建一个表单,用于用户选取图片。

 <input type="file" name="picture" accept="image/png, image/jpeg"/>

一旦用户选中图片,将其显示在 canvas 的函数可以这样写:

 document.querySelector('input[name=picture]').onchange = function(e){      readFile(e.target.files[0]); } function readFile(file){   var reader = new FileReader();   reader.onload = function(e){     applyDataUrlToCanvas( reader.result );   };   reader.readAsDataURL(file); }

还可以在 canvas 上面定义拖放事件,允许用户直接拖放图片到上面。

 // stop FireFox from replacing the whole page with the file. canvas.ondragover = function () { return false; }; // Add drop handler canvas.ondrop = function (e) {   e.stopPropagation();   e.preventDefault();    e = e || window.event;   var files = e.dataTransfer.files;   if(files){     readFile(files[0]);   } };

所有的拖放事件都有一个 dataTransfer 属性,它包含拖放过程涉及的二进制数据。

还可以让 canvas 显示剪贴板中的图片。

【注:本文源自网络文章资源,由站长整理发布】

 document.onpaste = function(e){   e.preventDefault();   if(e.clipboardData&&e.clipboardData.items){     // pasted image     for(var i=0, items = e.clipboardData.items;i<items.length;i++){       if( items[i].kind==='file' && items[i].type.match(/^image/) ){         readFile(items[i].getAsFile());         break;       }     }   }   return false; }; 

web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:HTML5 canvas 实现本地文件上传预览功能
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址