H5 图片压缩上传

H5活动已十分普遍,其中一种形式是让用户上传图片进行参与。移动端上传图片,用户一般都是上传手机相册中的图片,而现在手机的拍摄质量越来越高,一般单张照片的尺寸都在3M左右。若直接上传,十分耗流量,并且体验效果也不佳。因此需要在上传之前,先进行本地压缩。

接下来总结在h5活动的开发中图片压缩上传的功能,并标记其中踩过的几个坑,分享给大家:


小白区必看

对于移动端图片上传毫无概念的话,需要补充FileReader、Blob、FormData三个概念。

1.FileReader

定义

使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用File对象或者Blob对象来指定所要处理的文件或数据.

方法

方法名 参数 描述
readAsBinaryString file or blob 读取为原始二进制数据.
readAsDataURL file or blob 读取为data: URL格式的字符串,若为图片,即Base64格式.
readAsText file or blob,encoding 读取为文本,第二个参数文本的编码,默认UTF-8.
readAsArrayBuffer file or blob 读取为ArrayBuffer对象.

事件处理程序

事件名 描述
onabort 读取操作中止时调用.
onerror 当读取操作发生错误时调用.
onload 当读取操作成功完成时调用.
onloadend 当读取操作完成时调用,不管是成功还是失败.该处理程序在onload或者onerror之后调用.
onloadstart 当读取操作将要开始之前调用.
onprogress 在读取数据过程中周期性调用.

使用

var fileReader = new FileReader();
fileReader.onload = function() {
   
    var url = this.result;
}
//or
fileReader.onload = function(e) {
   
    var url = e.target.result;
}

2.Blob

BLOB(binary large object),二进制大对象,是一个可以存储二进制文件的容器。

3.FormData

利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个”表单”.


正题

移动端图片压缩上传过程:
1)input file上传图片,使用FileReader读取用户上传的图片;
2)图片数据传入img对象,将img绘制到canvas上,再使用canvas.toDataURL进行压缩;
3)获取压缩后的base64格式图片数据,转成二进制,塞入formdata,最后通过xmlHttpRequest提交formdata;

1.获取图片数据
fileEle.onchange = function() {
   
    if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值