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

在以前,要用web来实现图片上传预览功能必须借助插件或者flash来实现。但是现在我们可以借助 HMTL5 的 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;
};

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

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

原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/251215.html

(0)
上一篇 2022年5月2日 04:18
下一篇 2022年5月2日 04:25

相关推荐

发表回复

登录后才能评论