$cordovaFileTransfer 拍照上传文件

ionic开发项目,其中涉及到拍照上传文件,

按照官方的说法

第一步:配置

var options ={
	quality:50,//相片质量0-100
	
	destinationType:Camera.DestinationType.DATA_URL,// 返回类型:DATA_URL= 0,返回作为 base64 編碼字串。 FILE_URI=1
	sourceType:Camera.PictureSourceType.CAMERA,//从哪里选择图片:PHOTOLIBRARY=0,相机拍照=1,SAVEDPHOTOALBUM=2。0和1其实都是本地图库
	allowEdit:false,
	encodingType:Camera.EncodingType.JPEG,//保存的图片格式: JPEG = 0, PNG = 1
	targetWidth:200,
	targetHeight:200,
	mediaType:0,//可选媒体类型:圖片=0,只允许选择图片將返回指定DestinationType的参数。 // 視頻格式=1,允许选择视频,最终返回 FILE_URI。ALLMEDIA= 2,允许所有媒体类型的选择。
	cameraDirection:0,//枪后摄像头类型:Back= 0,Front-facing = 1
	popoverOptions:50,
	saveToPhotoAlbum:true,
}

第二步:

$cordovaFileTransfer.upload(encodeURI(url), imgData, options)
.then(function (result) {
  console.log(JSON.stringify(result.response));
  
  console.log("success");
}, function (err) {
  console.log(JSON.stringify(err));
  
  console.log("fail");
}, function (progress) {
  // constant progress updates
});


参数说明:遇到的坑,后台就是不能接收到文件和参数,不管怎样都为空

原因:saveToPhotoAlbum

这个参数的意思是拍照之后将图像保存到相册,如果为false,就不保存。如果你写的false,恭喜你,掉坑里了。

cordova插件拍照上传的时候,会传一个文件路径,如果你不保存到本地,上传的时候,插件就找不到文件,服务器就会收到一个空,附带的参数也会一并未空,原理就是这样。



demo:

app.config ={
	"ServiceRootPath":"http://blog.csdn.net/sixteen_cicle/",
	"FileUploadPath":"FileServlet",
}
var ionLoading = function($ionicLoading, templateContent) {
	$ionicLoading.show({
		template : templateContent,
		duration : 2000
	});
};





var setImg = function()
{

	

		amarPic.getPic($scope).then(function(){//amarPic angular 服务名
			function(imagebase64)
			{
				console.log(imagebase64);
				 var options = new FileUploadOptions();//cordova标准

				 options.params = {"transCode": "salesman.app.uploadheadimg", "userid":"userid"};
				 options.fileKey = "imagebase64";
				 options.fileName = imagebase64;//传入图片文件

				 var url = encodeURI(AmApp.config.ServiceRootPath + AmApp.config.FileUploadPath);//uri编码
				// $cordovaFileTransfer上传文件
				 $cordovaFileTransfer.upload(url,imagebase64,options)
				 .then(function(result){

				 	// console.log(result);

				 	// JSON 字符串 - js变量

				 	var result = JSON.parse(result.response);
				 	$ionicLoading.hide();//隐藏,移除的区别?
				 	if(result.issuccess)
				 	{
				 		ionLoading($ionicLoading, "图片上传成功");
				 		$scope.info.imagesrc = imagebase64;


				 	}else{
				 		ionLoading($ionicLoading, "图片上传失败");

				 	}


				 },function(err){
				 	$ionicLoading.hide();//隐藏,移除的区别?
				 	ionLoading($ionicLoading, "图片上传失败");
				},function(progress){
				 	$ionicLoading.show({
				 		template : "正在处理中",
				 	});
				});

			}
		},);

};


 
  

你可能感兴趣的:(javascript开发)