上传图片兼容ios和安卓
2017-06-02 17:10
423 查看
/*图片上传*/ function FileReder_getphotos(input, id) { if(typeof FileReader === 'undefined') { mui.toast("抱歉,您的浏览器不支持FileReader") } else { readFile(input, id); } function readFile(input, id) { var imgName = input.files[0].name; // 图片完整名 var imgType = judgeImg(imgName); if(imgType !== 'jpg' && imgType !== 'png') { mui.toast('请选择合法的图片'); return false; } var baseType = input.files[0].type; $(id).attr('imgType', imgType); var file = input.files[0]; if(!/image\/\w+/.test(file.type)) { mui.toast("请确保文件为图像类型"); return false; } var reader = new FileReader(); /** * readAsDataURL方法会使用base-64进行编码,编码的资料由data字串开始,后面跟随的是MIME type,然后再加上base64字串,逗号之后就是编码过的图像文件的内容。 */ reader.readAsDataURL(file); //开始读取指定的Blob对象或File对象中的内容 //读取成功后调用 reader.onload = function(e) { // console.log(e.target.result);//获取File的url // mui.toast(e.target.result); var imgPath = e.target.result; // base64 $(id).find('span').css('background-image','url('+imgPath+')'); picBase = imgPath.substring(imgPath.indexOf(',') + 1, imgPath.length); // }; // 读取失败时调用 reader.onerror = function(e) { console.log(JSON.stringify(e) + "出错"); } } function judgeImg(path) { var regs = [/\.(gif|GIF)$/, /\.(jpg|JPG)$/, /\.(jpeg|JPEG)$/, /\.(png|PNG)$/]; var type = ['gif', 'jpg', 'jpeg', 'png']; for(var i in regs) { if(regs[i].test(path)) { return type[i]; } } } }
上面是js.下面是html
<div class="home-m2"> <span>保单凭证</span> <span id="picture"> <span></span> </span> <span id="commit">点击上传 </span> <input type="file" id="inputs" onchange="FileReder_getphotos(this,'#picture')" name="" value="" /> <!--<input type="file" id="inputs" onchange="getPhotos(this,'#picture')" name="" value="" />--> </div>
之前很多都兼容不能苹果,这个可以
百度一个比较好的代码,利用canves压缩图片
function UpLoad(e) {
var f = e.files[0];
fileType = f.type;
if(/image\/\w+/.test(fileType)) {
var fileReader = new FileReader();
fileReader.readAsDataURL(f);
fileReader.onload = function(event) {
var result = event.target.result; //返回的dataURL
var image = new Image();
image.src = result;
//若图片大小大于1M,压缩后再上传,否则直接上传
if(f.size>1024*1024){
image.onload = function() { //创建一个image对象,给canvas绘制使用
var canvas = document.getElementById("canvas");
canvas.width = this.width;
canvas.height = this.height; //计算等比缩小后图片宽高
var ctx = canvas.getContext('2d');
ctx.drawImage(this, 0, 0, canvas.width, canvas.height);
var newImageData = canvas.toDataURL(fileType, 0.8); //重新生成图片
sendData = newImageData.replace("data:"+fileType+";base64,",'');
dataLength=decodeBase64(sendData).length;//base64位图片长度(这里没有写这个方法)
$("#imgUrl").val(sendData);
$("#preViewImg").attr("src",newImageData);
$("#canvas").hide();
}
}else{
image.onload = function() { //创建一个image对象,给canvas绘制使用
sendData = result.replace("data:"+fileType+";base64,",'');
dataLength=decodeBase64(sendData).length;
$("#preViewImg").attr("src",result);
$("#imgUrl").val(sendData);
}
}
}
} else {
alert("请选择图片");
}
}
相关文章推荐
- 微信页面上传图片,安卓和ios上传接口的兼容处理
- 手机网页版JS压缩上传图片--base64位 兼容IOS和安卓
- 移动端web无刷新上传图片【兼容安卓IOS】 推荐
- 微信上传多张图片问题(兼容ios,安卓)
- 移动端html5图片上传方法【更好的兼容安卓IOS和微信】
- 移动端图片上传方法【更好的兼容安卓IOS和微信】 推荐
- 移动端html5图片上传方法【更好的兼容安卓IOS和微信】
- h5上传图片完美兼容安卓ios
- 移动端html5图片上传方法【更好的兼容安卓IOS和微信】
- 微信开发上传图片ios与安卓兼容问题
- 上传本地图片兼容苹果安卓
- 安卓 PC IOS客户端图片上传
- 上传本地图片兼容苹果安卓 苹果90度问题已解决
- LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android
- 利用微信js-sdk上传图片,在安卓下无反应,在ios下报miss miss argument的错
- 上传图片预览 兼容IE和FF
- 多图片上传+图片预览,兼容所有浏览器 IE5/IE6/IE7/IE8/IE9/Chrome/Safari/Firefox/Opera/
- ie6,ie7,ie8和firefox下兼容的图片上传预览
- 兼容ie6、ie7、ie8 和FF的本地上传图片预览,并客户端判断文件大小和文件格式
- javascript图片上传格式验证,缩略图预览呈现,兼容IE,FIREFOX