后台接口
//pathContent为网络图像文件转Base64生成的DataURL public string getUrl(string pathContent) { int length = pathContent.Length; string comname = ""; string base64 = pathContent.Substring(pathContent.IndexOf(",") + 1); try { string inputStr = base64; byte[] arr = Convert.FromBase64String(inputStr); comname = Guid.NewGuid().ToString() + ".png"; MemoryStream ms = new MemoryStream(arr); AliyunOSS.PutObject(bucketName, "离线整改/" + comname, ms); ms.Close(); } catch (Exception ex) { return ex.Message; } return "离线整改/" + comname; }
选择图片
//上传图片 document.getElementById('photo').addEventListener('tap', function(e) { 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; } }) } }); // 拍照获取图片 function getImage() { var c = plus.camera.getCamera(); c.captureImage(function(e) { plus.io.resolveLocalFileSystemURL(e, function(entry) { var imgSrc = entry.toLocalURL() + "?version=" + new Date().getTime(); //拿到图片路径 setHtml(imgSrc); var dstname = "_downloads/" + getUid() + ".jpg"; //设置压缩后图片的路径 newUrlAfterCompress = compressImage(imgSrc, dstname); appendFile(dstname, imgSrc); }, function(e) { console.log("读取拍照文件错误:" + e.message); }); }, function(s) { console.log("error" + s); }, { filename: "_doc/camera/" }) } // 从相册中选择图片 function galleryImg() { plus.gallery.pick(function(e) { for (var i in e.files) { var fileSrc = e.files[i]; setHtml(fileSrc); var dstname = "_downloads/" + getUid() + ".jpg"; //设置压缩后图片的路径 newUrlAfterCompress = compressImage(e.files[i], dstname); appendFile(dstname, fileSrc); } }, function(e) { console.log("取消选择图片"); }, { filter: "image", multiple: true, maximum: 5, system: false, onmaxed: function() { plus.nativeUI.alert('最多只能选择5张图片'); } }); } function setHtml(e) { var divHtml = "<div class="a-add"><img src=" + encodeURI(e) + " class="file_img" style="96px;height:96px"><img src="../../images/remove.png" class="a-remove"></div>"; $("#imgDiv").prepend(divHtml); } var files = []; // 添加文件 var index = 1; var newUrlAfterCompress; function appendFile(p, fileSrc) { files.push({ name: "img" + index, //这个值服务器会用到,作为file的key path: p, fileSrc: fileSrc }); index++; } //压缩图片,这个比较变态的方法,无法return function compressImage(src, dstname) { plus.zip.compressImage({ src: src, dst: dstname, overwrite: true, quality: 20 }, function(event) { return event.target; }, function(error) { console.log(error); return src; }); } // 产生一个随机数 function getUid() { return Math.floor(Math.random() * 100000000 + 10000000).toString(); }
离线保存
//上传文件 function upload() { for (var i = 0; i < files.length; i++) { var f = files[i]; var img = f.fileSrc; //这样就获取到了文件的Base64字符串 var base64 = getBase64Image(img); } } //网络图像文件转Base64 function getBase64Image(img) { var image = new Image(); image.onload = function() { var canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; var ctx = canvas.getContext("2d"); ctx.drawImage(image, 0, 0); var ext = image.src.substring(image.src.lastIndexOf(".") + 1).toLowerCase(); var dataURL = canvas.toDataURL("image/" + ext); saveImage(confirm_id, "整改确认", _localStorage.getItem("record_id"), "1", localStorage.getItem("realName"), dataURL); }; image.src = img; } function saveImage(business_id, business_type, item_id, file_type, create_user, imageStr) { db.transaction(function(tx) { var guid = new GUID(); var id = guid.newGUID(); var create_date = getDate(); tx.executeSql('insert into im_file values(?,?,?,?,?,?,?,?)', [id, business_id, business_type, item_id, file_type, create_user, create_date, imageStr ], imageSuccess, imageError); }); } function imageSuccess(tx, rs) { files = []; index = 1; $("#imgDiv").find(".a-add").remove(); $("#text-h").val(''); GetConfirmItem(); //启用下拉刷新 plus.webview.currentWebview().setPullToRefresh({ support: true, style: "circle", offset: '100px' }); } function imageError(tx, error) { files = []; mui.alert("上传失败,错误信息:" + error.message); //console.log("上传失败,错误信息:" + error.message); }