MUI上传图片之选择相册和相机上传
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上传图片之选择相册和相机上传的更多相关文章
- ios uiimagepickercontroller 选择相册或者拍照上传
首先需要实现UIImagePickerControllerDelegate 代理 实现其imagePickerController 方法 这里用于选择图片或的拍照回调 //调用相机拍照 或者 图库选 ...
- Hbuilder mui 相册拍照图片上传
http://www.bcty365.com/content-146-3648-1.html 使用流程 弹出actionSheet /*点击头像触发*/ document.getElementById ...
- mui + H5 调取摄像头和相册 实现图片上传
最近要用MUI做项目,在研究图片上传时 ,遇到了大坑 ,网上搜集各种资料,最终写了一个demo,直接看代码.参考(http://www.cnblogs.com/richerdyoung/p/66123 ...
- QQ登入(5)获取空间相册,新建相册,上传图片到空间相册
///////////////////////////////////////////////////////////////////// 获取相册列表:必须先授权登入 1.1. String mA ...
- 微信JS-SDK选择相册或拍照并上传PHP实现
理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可. 效果 通过微信js接口,调用底层程序. 需要引入js文件,并进行 ...
- JS中调用android和ios系统手机打开相机并可选择相册功能
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/57626154 实现android手机打开相机选择相册 ...
- mui选择时间、选择日期
完整代码: <header class="mui-bar mui-bar-nav"> <a class="mui-action-back mui-i ...
- mui+vue+photoclip做APP头像裁剪上传
做APP由于项目需要,需要做用户头像上传的功能,头像上传包括拍照和相册选择图片进行上传,这里使用的技术是mui封装的plus,在进行图片裁剪的时候,使用的是photoclip来进行裁剪,由于个人在使用 ...
- 基于H5+ API手机相册图片压缩上传
// 母函数 function App(){} /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...
随机推荐
- vscode常用快捷键
一.vs code 的常用快捷键列表 1.注释: a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/ b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + ...
- Mac打开Terminal报错-bash : : command not found
问题描述: Mac系统在打开Terminal的时候,报错-bash : : command not found. 问题分析: 报错并不影响Terminal的使用,于是忽略不计.但是在修改.bash_p ...
- My Todo-List
有些事情要明着写出来才会去干. 这里是一个不断更新的Todo-List,大致按照重要度和列出时间排序. 主要着眼短期计划,其中的大部分事务应该在一周内解决,争取不做一只鸽子. 填好模板库的坑. 学习树 ...
- django 2.接口之工作原理
1.创建应用程序有两种方法,第一种就是在新建项目的时候,在最初使的时填入应用程序名称,第二种就是进入目录下面,输入 python manage.py startapp appName 就会自动生成一个 ...
- JS的去抖、节流
去抖(debounce) 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. //模拟一段ajax请求 function ajax(content) { console.log('aj ...
- Docker-CentOS7-安装
yum install -y docker 可以看到,已经安装上docker了,并且没有报什么错误 启动docker,并查看运行状态 停止docker,并查看运行状态 启动完 docker后,可以查看 ...
- 【asp.net】asp.net实现上传Excel文件并读取数据
#前台代码:使用服务端控件实现上传 <form id="form1" runat="server"> <div> <asp:Fil ...
- Java 集合系列之一:JCF集合框架概述
容器,就是可以容纳其他Java对象的对象.Java Collections Framework(JCF)为Java开发者提供了通用的容器 java集合主要划分为四个部分: Collection(Lis ...
- 微信小程序 开发文档
官方开发文档: 小程序公众平台 小程序开发者指南 小程序开发者文档 学习资源: 微信:官方入门教程 微信:WeUI 是一套同微信原生视觉体验一致的基础样式库 微信:微信小程序示例 视频: 学堂在线:学 ...
- Docker配置镜像加速
1.获取镜像地址 1.1.阿里云 打开网址:https://cr.console.aliyun.com/#/accelerator 注册.登录.设置密码 然后在页面上可以看 ...