var fileArr = [],fileSrcLength,imgUpLength=0,imgsLength=0; mui.init({ swipeBack: true //启用右滑关闭功能 }); document.getElementById('headImage').addEventListener('tap', function() { if (mui.os.plus) { var buttonTit = [{ title: "拍照" }, { title: "从手机相册选择" }]; plus.nativeUI.actionSheet({ title: "上传图片", cancel: "取消", buttons: buttonTit }, function(b) { /*actionSheet 按钮点击事件*/ switch (b.index) { case 0: break; case 1: getImage(); /*拍照*/ break; case 2: galleryImg(); /*打开相册*/ break; default: break; } }) } else if (typeof window !== 'undefined' && window.File && window.FileReader && window.FileList && window.Blob) { var input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; input.multiple = true; // 允许选择多张图片 input.capture = 'camera'; input.onchange = function(e) { var files = e.target.files; if (files.length > 0) { var promises = []; for (var i = 0; i < files.length; i++) { var file = files[i]; var reader = new FileReader(); var promise = new Promise(function(resolve, reject) { reader.onload = function(e) { var base64 = e.target.result; resolve({ base64 }); }; reader.onerror = function(e) { reject(e); }; reader.readAsDataURL(file); }); promises.push(promise); } Promise.all(promises).then(function(res) { for (var info of res) { if (info.base64) { setHtml(info.base64, info.base64); fileArr.push(info.base64); } } upFile(); }).catch(function(error) { console.error('读取文件失败:', error); }); } }; input.click(); } }, false); // 拍照获取图片   function getImage() { var c = plus.camera.getCamera(); fileArr = []; imgUpLength = 0; c.captureImage(function(e) { plus.io.resolveLocalFileSystemURL(e, function(entry) { plus.nativeUI.showWaiting() var imgSrc = entry.toLocalURL() + "?version=" + new Date().getTime(); //拿到图片路径   imgUpLength++; appendFile(imgSrc); }, function(e) { console.log("读取拍照文件错误:" + e.message); }); }, function(s) { console.log("error" + s.message); }, { filename: "_doc/camera/" }) } // 从相册中选择图片    function galleryImg() { // 从相册中选择图片   fileArr = []; imgUpLength = 0; plus.gallery.pick(function(e) { for (var i in e.files) { var fileSrc = e.files[i]; fileSrcLength = e.files.length; imgUpLength++; appendFile(fileSrc); } plus.nativeUI.showWaiting(); }, function(e) { console.log("取消选择图片"); }, { filter: "image", multiple: true, //maximum: 5, system: false, onmaxed: function() { plus.nativeUI.alert('最多只能选择5张图片'); } }); } function setHtml(path, fl) { var str = ''; str = '
  • ' + '' + '
    ' + '
  • '; $("#imgs").append(str); } $("#imgs").on("tap", ".deleteBtn", function() { var btnArray = ['取消', '确定']; var index=$(this).parent().parent(); mui.confirm('确认删除', '提示', btnArray, function(e) { if(e.index == 1) { index.remove(); imgsLength--; } else { plus.nativeUI.toast('取消'); } }) }) function upFile() { console.log(fileArr, 'fileArr') mui.ajax(huayi.config.callcenter_url + '/ApplicationsVersion/UploadBase64', { data: { "dataurl": fileArr }, dataType: 'json', //服务器返回json格式数据 type: 'post', //HTTP请求类型 timeout: 300000, //超时时间设置为30秒 success: function(data) { if (data.state == "success") { console.log(1) for (var i in data.acs) { $("#imgs li").eq(Number(imgsLength)).attr("imgId", data.acs[i].F_Id) imgsLength++; } mui.toast("图片上传成功"); // plus.nativeUI.closeWaiting(); } else { mui.alert("上传失败"); //plus.nativeUI.closeWaiting(); } }, error: function(xhr, type, errorThrown) { mui.alert(errorThrown); // plus.nativeUI.closeWaiting(); } }); } // 添加文件 var f1 = null; function appendFile(path) { //fileArr=[] var bitmap = new plus.nativeObj.Bitmap("test"); // 从本地加载Bitmap图片 bitmap.load(path,function(){ var base64 = bitmap.toBase64Data() var img = new Image(); img .crossOrigin = "Anonymous"; img.src = path; // 传过来的图片路径在这里用。 img.onload = function() { var that = this; //生成比例 var w = that.width, h = that.height, scale = w / h; w = 480 || w; //480 你想压缩到多大,改这里 h = w / scale; //生成canvas var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); $(canvas).attr({ width: w, height: h }); ctx.drawImage(that, 0, 0, w, h); var base64 = canvas.toDataURL('image/jpeg', 1 || 0.8); //1最清晰,越低越模糊。有一点不清楚这里明明设置的是jpeg。弹出 base64 开头的一段 data:image/png;却是png。哎开心就好,开心就好 f1 = base64; // 把base64数据丢过去,上传要用。 setHtml(path, f1); fileArr.push(f1); if (imgUpLength == fileArr.length) { upFile() } } },function(e){ console.log('加载图片失败:'+JSON.stringify(e)); }); } // function appendFile(path) { // var img = new Image(); // img.src = path; // 传过来的图片路径在这里用。 // img.onload = function() { // var that = this; // //生成比例 // var w = that.width, // h = that.height, // scale = w / h; // w = 480 || w; //480 你想压缩到多大,改这里 // h = w / scale; // //生成canvas // var canvas = document.createElement('canvas'); // var ctx = canvas.getContext('2d'); // $(canvas).attr({ // width: w, // height: h // }); // ctx.drawImage(that, 0, 0, w, h); // var base64 = canvas.toDataURL('image/jpeg', 1 || 0.8); //1最清晰,越低越模糊。有一点不清楚这里明明设置的是jpeg。弹出 base64 开头的一段 data:image/png;却是png。哎开心就好,开心就好 // f1 = base64; // 把base64数据丢过去,上传要用。 // setHtml(path, f1) // fileArr.push(f1); // if(imgUpLength==fileArr.length){ // upFile() // } // } // }