首先,我们先来捋一捋想要实现的功能:
- 预览
- 删除
- 压缩
- 上传到服务器
基本机构
这样,我们的组件结构就有了:
;!function(window, $, undefined){ function Upload() { }; Upload.prototype.change = function() { }; Upload.prototype.del = function() { }; Upload.prototype.compress = function() { }; Upload.prototype.submit = function() { }; }(window, jQuery)
主要API
接下来,介绍一下组件需要用到的几个API:
- FileList
```` // 获取上传文件的 FileList document.getElementById('inputId').files ````
- window.URL.createObjectURL(file):返回一个关于图片地址url的blob格式
- createImageBitmap(file):返回一个imageBitmap对象,它包含着文件的相关信息
- canvas.drawImage(imageBitmap):将图片画在canvas画布上,对图片大小进行缩放
- canvas.toBlob():转化为blob对象,可以对图片质量进行更改
- FormData:将上传图片保存在FormData的实例上,上传到服务器
DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload