原文出處:https://blog.csdn.net/u013007703/article/details/53196091
延伸閱讀:Ionic2中的相冊選擇和拍照上傳——ImgService
網絡上已有的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: '拍照' },
{ text: '從相冊選擇' }
],
buttonClicked: function(index) {
//設置頭像
SelectPicture.chooseSinglePicture(index, 120, 120, $scope);
return true;
}
});
}
})
閆斌(BeanYon)
---------------------
作者:閆斌_BeanYon
來源:CSDN
原文:https://blog.csdn.net/u013007703/article/details/53196091
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!