| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- 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 = '<li class="mui-table-view-cell" imgId=""><div class="img_div">' +
- '<img src="' + path + '" base64="' + f1 + '">' +
- '<div class="mui-icon mui-icon-trash deleteBtn"></div>' +
- '</div></li>';
- $("#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()
- // }
-
- // }
- // }
|