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端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...
随机推荐
- 剑指Offer面试题 二维数组中的查找
题目链接:https://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e 题目大意: 略 分析: 对萌醒很开拓思维 ...
- 在Asp.Net Core中集成ABP Dapper
在实际的项目中,除了集成ABP框架的EntityFrameworkCore以外,在有些特定的场景下不可避免地会使用一些SQL查询语句,一方面是由于现在的EntityFrameworkCore2.X有些 ...
- CF 543C Remembering Strings
https://cn.vjudge.net/problem/CodeForces-543C 题目 You have multiset of n strings of the same length, ...
- vue在html中出现{{}}原因及解决办法
在刚开始接触vue的时候,我们都是直接用<script>引入vue.js使用.没有借助vue-cli脚手架来构建项目. 对于一个初学者来说,跟着文档慢慢搬砖,使用vue进行数据绑定. 记得 ...
- C# 比较多个数组(lambda,匿名比较器)
//逐个比较,找出最大的那个数组 static void Main(string[] args) { //测试数据 , , }; , , }; , , }; , , }; List<int[]& ...
- MySQL逻辑备份mysqldump
MySQL 备份之 mysqldump mysqldump mysqldump工具备份: 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较 ...
- Keepalived配置详解
Keepalived 配置文件解释 Keepalived的所有配置都在一个配置文件里面,主要分为三类: 全局配置 VRRPD配置 LVS 配置 配置文件是以配置块的形式存在,每个配置块都在一个闭合的{ ...
- The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer (单调栈+线段树)
题目链接:https://nanti.jisuanke.com/t/38228 题目大意:一个区间的值等于该区间的和乘以区间的最小值.给出一个含有n个数的序列(序列的值有正有负),找到该序列的区间最大 ...
- Python学习day17 迭代器&生成器
迭代器&生成器 1. 迭代器 1.1 迭代器 迭代:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次"迭代" 迭代器:帮助对某种对象 ...
- [HNOI2010]城市建设
[HNOI2010]城市建设 玄学cdq O(nlog^2n)的动态最小生成树 其实就是按照时间cdq分治+剪枝(剪掉一定出现和不可能出现的边) 处理[l,r]之间的修改以及修改之后的询问,不能确定是 ...