uni或mui上传图片方法封装

10 篇文章 0 订阅
6 篇文章 0 订阅
图片上传
/**
 * imgNumber  选择图片的个数 number fex:1
 * successBack  图片上传成功回调函数
 * errorBack  图片上传失回调函数
 * baseUrl  上传图片请求地址
 * imgType  选择图片类型  1:拍照和上传全部有  2:只有拍照  3:只有选择图片
 * 
 * 注 : 要在onReady后执行
 */
const uploadImg = (imgNumber,imgType,successBack,errorBack,baseUrl) =>{
	if(imgType == 1){
		let btnArray = [{title:"拍一张"},{title:"相册选择"}];
		plus.nativeUI.actionSheet( {
			cancel:"取消",
			buttons: btnArray
		}, function(e){
			var index = e.index;
			switch (index){
				case 0:
					break;
				case 1:
					appendByCamera(imgNumber,imgType,successBack,errorBack,baseUrl);
					break;
				case 2:
					// 从相册中选择图片
					galleryImg(imgNumber,imgType,successBack,errorBack,baseUrl);
					break;
			}
		});
	}else if(imgType == 2){
		let btnArray = [{title:"拍一张"}];
		plus.nativeUI.actionSheet( {
			cancel:"取消",
			buttons: btnArray
		}, function(e){
			var index = e.index;
			switch (index){
				case 0:
					break;
				case 1:
					appendByCamera(imgNumber,imgType,successBack,errorBack,baseUrl);
					break;
			}
		});
	}else{
		let btnArray = [{title:"相册选择"}];
		plus.nativeUI.actionSheet( {
			cancel:"取消",
			buttons: btnArray
		}, function(e){
			var index = e.index;
			switch (index){
				case 0:
					break;
				case 1:
					galleryImg(imgNumber,imgType,successBack,errorBack,baseUrl);
					break;
			}
		});
	}
	
}
拍照方法
/**
 * 
 * 拍照
 */
const appendByCamera = (imgNumber,imgType,successBack,errorBack,baseUrl) =>{
	uni.showLoading({
		title: "图片拍照中...",
		icon: "none"
	})
	plus.camera.getCamera().captureImage((p) => {
		plus.io.resolveLocalFileSystemURL( p,  ( entry ) => {
			let pic = entry.toLocalURL();
			var picname="_doc/"+Math.floor(Math.random()*100000000+10000000).toString()+".png";
			plus.zip.compressImage({
					src: pic,
					dst:picname,
					quality:20,
					width:"400px",
					format:"png"
				},
				function(data) {
					// 初始化files
					let files = [];
					// 添加到上传列表
					files.push({name:"uploadkey1",path:data.target});
					if(files.length<=0){
						plus.nativeUI.alert("没有添加上传文件!");
						return;
					}
					//创建上传任务
					var task = plus.uploader.createUpload(baseUrl,{method:"POST"},successBack);
					//添加上传数据
					task.addData("client","HelloH5+");
					task.addData("uid",Math.floor(Math.random()*100000000+10000000).toString());
					for(let i = 0;i < files.length;i++){
						let f = files[i];
						//添加上传文件
						task.addFile(f.path,{key:f.name});
					}
					task.start();
				},function(error){
					uni.hideLoading();
					wt.close();
					mui.toast('添加文件失败');
			});
		});
	},(error) => {
		uni.hideLoading();
	});
}

相册额选择方法
/**
 * 相册选择
 */
const galleryImg = (imgNumber,imgType,successBack,errorBack,baseUrl) => {
	uni.showLoading({
		title: "图片选择中...",
		icon: "none"
	})
	plus.gallery.pick(function(e){
		for(var i in e.files){
	    	var fileSrc = e.files[i]
	    	var picname="_doc/"+Math.floor(Math.random()*100000000+10000000).toString()+".png";
	    	plus.zip.compressImage({
	    			src: fileSrc,
	    			dst:picname,
	    			quality:20,
	    			width:"400px",
	    			format:"png"
	    		},
	    		function(data) {
					console.log(JSON.stringify(data));
	    			// 初始化files
	    			let files = [];
	    			// 添加到上传列表
	    			files.push({name:"uploadkey1",path:data.target});
	    			if(files.length<=0){
	    				plus.nativeUI.alert("没有添加上传文件!");
	    				return;
	    			}
	    			//创建上传任务
	    			var task = plus.uploader.createUpload(baseUrl,{method:"POST"},successBack);
	    			//添加上传数据
	    			task.addData("client","HelloH5+");
	    			task.addData("uid",Math.floor(Math.random()*100000000+10000000).toString());
	    			for(let i = 0;i < files.length;i++){
	    				let f = files[i];
	    				//添加上传文件
	    				task.addFile(f.path,{key:f.name});
	    			}
	    			task.start();
	    		},(error) =>{
	    			wt.close();
					uni.hideLoading();
	    			mui.toast('添加文件失败');
	    	});
		}
	}, function ( e ) {
		uni.hideLoading();
		console.log( "取消选择图片" );
	},{
		filter: "image",
		multiple: true,
		maximum: imgNumber,
		system: false,
		onmaxed: function() {
			plus.nativeUI.alert('最多只能选择'+imgNumber+'张图片');
		}
	});
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stzyz_121314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值