详解ionic本地相册、拍照、裁剪、上传(单图完全版)
更新时间:2017年10月10日 14:59:21 作者:雨末画桥
本篇文章主要介绍了ionic本地相册、拍照、裁剪、上传(单图完全版),非常具有实用价值,需要的朋友可以参考下
网络上已有的ionic图片选择上传博客碎片化过于严重,功能残缺或者引入了一些不必要的插件。这次以项目为契机,把ionic的图片选择、裁剪、上传整合一下,多图上传请戳ionic选择多张图片上传
插件安装
cordova plugin add cordova-plugin-camera //用于通过相机、相册选择图片并完成裁剪 cordova plugin add cordova-plugin-file-transfer //用于上传图片到服务器
将功能封装为服务
angular.module('starter.services', [])
//文件上传
.factory('UploadFile', function(Toast) {
return {
/**
* 上传文件到服务器
*
* @param fileUrl 文件路径
* @param server 服务器接口
*/
uploadFile: function(fileUrl, server) {
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
var options = new FileUploadOptions();
options.fileKey = "BeanYon";
options.fileName = fileUrl.substr(fileUrl.lastIndexOf('/') + 1);
options.mimeType = "image/jpeg";
options.chunkedMode = false;
var params = {account: localStorage.account};
options.params = params;
var ft = new FileTransfer();
ft.upload(fileUrl,
encodeURI(server),
success,
err,
options);
}
function success(r){
Toast.show("设置头像成功");
}
function err(error){
Toast.show("上传头像失败,请确保网络正常后再试");
}
}
}
})
//配置单张图片选择
.factory('SelectPicture', function(UploadFile, Toast) {
return {
/**
* 从相机或图库选择一张图片
*
* @param type 选择类型,0 拍照,1 相册
* @param width 目标宽度
* @param height 目标高度
* @param scope $scope对象
*/
chooseSinglePicture: function(type, width, height, scope) {
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
var options = {//相机配置
targetWidth: width,
targetHeight: height,
quality: 100,
allowEdit: true
}
if(type == 1){//图片源设置为相册
options.sourceType = 2;
}
navigator.camera.getPicture(
function(res){
scope.avatar_src = res;
scope.$apply();
localStorage.avatar = res;
UploadFile.uploadFile(res, "我的服务器地址");//传递自己的服务器接口地址
}, function(res){
Toast.show("选择头像失败");
}, options
);
}
},
/**
* 从图库选择多张图片
*/
choosePictures: function() {
window.imagePicker.getPictures(function(res){
alert(res+",success");
}, function(res){
alert(res+",failed");
}, {
maximumImagesCount: 10,
width: 80,
height: 80,
quality: 80
});
}
}
});
调用服务
angular.module('starter.controllers', [])
.controller('MyCtrl', function($scope, $state, $ionicActionSheet, UploadFile,Toast, SelectPicture) {
$scope.avatar_src = "img/default_avatar.jpg";
/**
*选择头像
*/
$scope.selectAvatar = function(){
// 显示操作表
$ionicActionSheet.show({
buttons: [
{ text: '<p style="font-size: 18px;">拍照<p>' },
{ text: '<p style="font-size: 18px;">从相册选择<p>' },
],
buttonClicked: function(index) {
//设置头像
SelectPicture.chooseSinglePicture(index, 120, 120, $scope);
return true;
}
});
}
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
AngularJS与BootStrap模仿百度分页的示例代码
分页在很多时候都能用到,这篇文章主要介绍了AngularJS与BootStrap模仿百度分页的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-05-05
Angular依赖注入系统里Injection token PLATFORM_ID使用场景详解
这篇文章主要为大家介绍了Angular依赖注入系统里Injection token PLATFORM_ID使用场景详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11
AngularJS基础 ng-model-options 指令简单示例
本文主要介绍AngularJS ng-model-options 指令,这里对ng-model-options指令的基本资料进行整理,有需要的小伙伴可以参考下2016-08-08
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
这篇文章主要介绍了AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能,结合实例形式分析了AngularJS自定义过滤器的定义及数组过滤相关操作技巧,需要的朋友可以参考下2018-04-04


最新评论