1.因为项目中有三处地方需要上传,所以html中存在三处地方。身份证正反面为上传一张,发票限制上传9张。

<div class="action1">
<!--展示图片页面-->
<button id="InputFile" class="InputFile image-item cardpica"></button>
</div> <div class="action2">
<!--展示图片页面-->
<button id="InputFile2" class="InputFile2 image-item cardpicb"></button>
</div> <div class="action3">
<!--展示图片页面-->
<div class="cropped cropped3">
</div> <button id="InputFile3" class="InputFile3 image-item cardpic"></button> </div>

2.js部分,推荐一个网址,文档有的比官方详细:http://www.dybc.com.cn/doc/mui_h5plus


//上传图片
var btn=document.getElementById('InputFile');
var btn1=document.getElementById('InputFile2');
var btn2=document.getElementById('InputFile3');
var type;//此处定义type是为了区分是从第几个区域上传的 btn.addEventListener('tap',function() {
type=0;
var btnArray = [{title: "照相机"}, {title: "相册"}]; //选择按钮 1 2 3
plus.nativeUI.actionSheet({
title: "请选择",
cancel: "取消", //
buttons: btnArray
},
function(e) {
var index = e.index;
/*alert(index);*/
switch(index) {
case 1:
//写自己的逻辑
camera();
break;
case 2:
album();
break;
}
}); }) btn1.addEventListener('tap',function() {
type=1;
var btnArray = [{title: "照相机"}, {title: "相册"}]; //选择按钮 1 2 3
plus.nativeUI.actionSheet({
title: "请选择",
cancel: "取消", //
buttons: btnArray
},
function(e) {
var index = e.index;
/*alert(index);*/
switch(index) {
case 1:
//写自己的逻辑
camera();
break;
case 2:
album();
break;
}
}); }) btn2.addEventListener('tap',function() {
type=2;
var btnArray = [{title: "照相机"}, {title: "相册"}]; //选择按钮 1 2 3
plus.nativeUI.actionSheet({
title: "请选择",
cancel: "取消", //
buttons: btnArray
},
function(e) {
var index = e.index;
/*alert(index);*/
switch(index) {
case 1:
//写自己的逻辑
camera();
break;
case 2:
album();
break;
}
}); }) function camera(){
var cmr = plus.camera.getCamera();
cmr.captureImage( function ( p ) {
//成功
plus.io.resolveLocalFileSystemURL( p, function ( entry ) { var img_name = entry.name;//获得图片名称
var path = entry.toLocalURL();//获得图片路径 upload_img(path); }, function ( e ) {
console.log( "读取拍照文件错误:"+e.message );
} ); }, function ( e ) {
console.log( "失败:"+e.message );
}, {filename:'_doc/camera/',index:1} ); // “_doc/camera/“ 为保存文件名 } function album(){
plus.gallery.pick( function(path){ /* img.src = path;*///获得图片路径
upload_img(path); }, function ( e ) {
console.log( "取消选择图片" );
}, {filter:"image"} ); } //初始上传地址
var server=config.api + '/public/common/upload';
var files=[]; //图片存放的数组 可以上传一个,或者多个图片 //上传图片
function upload_img(p){
//又初始化了一下文件数组 为了支持我的单个上传,如果你要一次上传多个,就不要在写这一行了
//注意
files=[];
var n=p.substr(p.lastIndexOf('/')+1);
files.push({name:"file",path:p}); //开始上传
start_upload(); } //开始上传
function start_upload(){
if(files.length<=0){
plus.nativeUI.alert("没有添加上传文件!");
return;
}
//原生的转圈等待框
var wt=plus.nativeUI.showWaiting();
var task=plus.uploader.createUpload(server,
{method:"POST"},
function(t,status){ //上传完成
wt.close();
/* alert(status);*/
if(status==200){
//关闭转圈等待框
//资源
var responseText = t.responseText;
//转换成json
var json = eval('(' + responseText + ')');
//上传文件的信息
var files = json.data;
//上传成功以后的保存路径
/* alert(type);*/
if(type==0){
if($('.img1').attr('src') == "") { } else {
$('.action1').append('<div class="cropped1">' +
'<div class="image1 ">' +
'<img src="' + files + '" class="img1 image-item cardpica" id="show"/>' +
'<div class="delete1">' + "X" + '</div>' +
'</div>' +
'</div>');
$('#InputFile').hide();
}
/*图片删除*/
$('.delete1').click(function() {
$(this).parent().remove();
$(this).parent().parent().remove();
$(this).siblings().find('.delete1').remove();
$(this).remove();
$('#InputFile').show();
}); }else if(type==1){
if($('.img2').attr('src') == "") {} else {
$('.action2').append('<div class="cropped2">' +
'<div class="image2 ">' +
'<img src="' + files + '" class="img2 image-item cardpicb" id="show"/>' +
'<div class="delete2">' + "X" + '</div>' +
'</div>' +
'</div>');
$('#InputFile2').hide();
}
/*图片删除*/
$('.delete2').click(function() {
$(this).parent().remove();
$(this).parent().parent().remove();
$(this).siblings().find('.delete1').remove();
$(this).remove();
$('#InputFile2').show();
}); }else if(type==2){
var num = $(".img3").length + 1;
if(num >9) {
mui.toast('最多上传9张发票图片哦~');
} else { $('.cropped3').append('<div class="image2 mui-col-xs-6">' + '<img src="' + files + '" class="img3 image-item ">' +
'<div class="delete3">' + "X" + '</div>' +
'</div>');
$('.btn-default').hide();
$('.delete3').click(function() {
$(this).parent().remove();
$(this).parent().find('img').removeAttr("src");
})
}
} console.log(JSON.stringify(files)); //ajax 写入数据库 }else{
console.log("上传失败:"+status);
//关闭原生的转圈等待框
wt.close();
}
}); //上传需要传输到接口的数据
task.addData("data",files);
task.addData("uid",getUid());
for(var i=0;i<files.length;i++){
var f=files[i];
task.addFile(f.path,{key:f.name});
}
task.start(); } // 产生一个随机数
function getUid(){
return Math.floor(Math.random()*100000000+10000000).toString();
}

3.发票传给后台需要自己存放到数组,因为页面的有两个按键。保存和提交审核,为了防止冲突,可以全部定义变量,然后每次进入按键时间初始化,把原来存放的值清空。

    var is_submit = "";
var param = {};
var images;
var imagesPic = {};
var cardPic = {};
var carda;
var cardb;
//数据
function applydata() {
images = [];
var name = $('.name').val();
var mobile = $('.mobile').val();
var mobile_backup = $('.mobile_backup').val();
var sex = $('#sex').find("option:selected").attr('class');
var card_type = $('#card_type').find("option:selected").attr('class');
var card_number = $('.card_number').val();
carda = $('.img1').attr("src");
cardb = $('.img2').attr("src");
var province = $("#pro").find("option:selected").attr('class');
var city = $('#city').find("option:selected").attr('class');
var hospital_id = $('#hospital_id').find("option:selected").attr('class');
var department_id = $('#department_id').find("option:selected").text();
var doctor = $('.doctor').val();
var store_province = $('#store_province').find("option:selected").attr('class');
var store_city = $('#store_city').find("option:selected").attr('class');
var store_id = $('#store_id').find("option:selected").attr('class'); //发票
$('.cropped img').each(function() {
var imageUrl = {};
imageUrl.url = $(this).attr("src");
images.push(imageUrl);
});
/*imagesPic.images = images;*/
/*imagesPic = JSON.stringify(images);*/ cardPic.card_front_imgurl = carda;
cardPic.card_back_imgurl = cardb;
/*cardPic = JSON.stringify(cardPic)*/ param = {
"name": name,
"sex": sex,
"mobile": mobile,
"mobile_backup": mobile_backup, "card_type": card_type,
"card_number": card_number,
"card_pic":JSON.stringify(cardPic), "province": province,
"city": city,
"hospital_id": hospital_id,
"department_id": department_id,
"doctor": doctor, "store_province": store_province,
"store_city": store_city,
"store_id": store_id, "invoice": JSON.stringify(images),
"is_submit": is_submit,
"page": 0,
"user_id": user_id,
"process_id": "89903124080230400"
}
}

MUI上传图片之选择相册和相机上传的更多相关文章

  1. ios uiimagepickercontroller 选择相册或者拍照上传

    首先需要实现UIImagePickerControllerDelegate 代理 实现其imagePickerController 方法  这里用于选择图片或的拍照回调 //调用相机拍照 或者 图库选 ...

  2. Hbuilder mui 相册拍照图片上传

    http://www.bcty365.com/content-146-3648-1.html 使用流程 弹出actionSheet /*点击头像触发*/ document.getElementById ...

  3. mui + H5 调取摄像头和相册 实现图片上传

    最近要用MUI做项目,在研究图片上传时 ,遇到了大坑 ,网上搜集各种资料,最终写了一个demo,直接看代码.参考(http://www.cnblogs.com/richerdyoung/p/66123 ...

  4. QQ登入(5)获取空间相册,新建相册,上传图片到空间相册

    ///////////////////////////////////////////////////////////////////// 获取相册列表:必须先授权登入 1.1.  String mA ...

  5. 微信JS-SDK选择相册或拍照并上传PHP实现

    理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可. 效果 通过微信js接口,调用底层程序. 需要引入js文件,并进行 ...

  6. JS中调用android和ios系统手机打开相机并可选择相册功能

    编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/57626154 实现android手机打开相机选择相册 ...

  7. mui选择时间、选择日期

      完整代码: <header class="mui-bar mui-bar-nav"> <a class="mui-action-back mui-i ...

  8. mui+vue+photoclip做APP头像裁剪上传

    做APP由于项目需要,需要做用户头像上传的功能,头像上传包括拍照和相册选择图片进行上传,这里使用的技术是mui封装的plus,在进行图片裁剪的时候,使用的是photoclip来进行裁剪,由于个人在使用 ...

  9. 基于H5+ API手机相册图片压缩上传

    // 母函数 function App(){} /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...

随机推荐

  1. Linux(Ubunt)使用日记------常用软件汇总(不定时更新)

    整理总结日常Ubuntu中使用的一些软件,事实证明使用Linux真的会让人的欲望变小有个能用的就不错啦,不要调三捡四 解压类 Unzip | unzip -O CP936 files Unrar ra ...

  2. MySQL安装后无法用root用户访问的问题

    今天在换了Ubuntu后装个本地的mysql,安装过程没什么好说的:sudo apt-get install mysql-server 安装好了之后我做了以下一系列常规动作: 1.$sudo mysq ...

  3. 缓存,热点key

    热点Key问题的发现与解决 https://help.aliyun.com/document_detail/67252.html 缓存击穿.失效以及热点key问题 https://www.jiansh ...

  4. Spring Bean's life

    In contrast, the lifecycle of a bean in a Spring container is more elaborate. It’simportant to under ...

  5. 上传图片,通过node服务器存储在指定目录

    最近做毕设,需要上传图片,因为在本地服务器运行,所以想着前端上传后,通过node服务器接收图片,存储在指定的目录下. 一.前端实现 1.前端的页面和上传图片是利用element-ui组件实现的,&qu ...

  6. [算法]浅谈求n范围以内的质数(素数)

    汗颜,数学符号表达今天才学会呀-_-# 下面是百度百科对质数的定义 质数(prime number)又称素数,有无限个. 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 求质数的方法 ...

  7. form组件+cookie+session总结

    1.forms 组件 -数据校验功能 1.定义 -新建一个py文件 -导入from django import forms -写一个类继承 forms.Form -把你需要校验的(字段的条件)属性写到 ...

  8. 【转】Java 线程池

    什么是线程池? 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程.线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求.然而, ...

  9. 洛谷P5289 [十二省联考2019]皮配(01背包)

    啊啊啊边界判错了搞死我了QAQ 这题是一个想起来很休闲写起来很恶心的背包 对于\(k=0\)的情况,可以发现选阵营和选派系是独立的,对选城市选阵营和学校选派系分别跑一遍01背包就行了 对于\(k> ...

  10. mysql 在visual studio中的配置

    视图-->其他窗口-->服务器资源管理器-->数据连接-->右键添加连接 servername:localhost username:root password:123456 ...