【功能介绍】

在开发应用的时候,经常会遇到需要上传图片的功能,比如修改个人资料的头像。本文介绍的是基于ionic框架,在移动端上传图片的功能。

【功能流程】

(1)点击页面上的头像,弹出一个对话框,选择[拍照]或者[从相册选择];

(2)选取/拍摄照片;

(3)上传照片;

【html核心代码】

<div ng-controller="myCtrl">
<a ng-click="choosePicMenu()">
<img ng-src="{{img}}">
</a>
</div>

【myCtrl.js核心代码】

(1)选取图片的函数

//定义选择照片的函数,
$scope.choosePicMenu = function() {
var type = 'gallery';
$ionicActionSheet.show({
buttons: [
{ text: '拍照' },
{ text: '从相册选择' }
],
titleText: '选择照片',
cancelText: '取消',
cancel: function() {
},
buttonClicked: function(index) {
if(index == 0){
type = 'camera';
}else if(index == 1){
type = 'gallery';
}
       //Camera.getPicture(type)->根据选择的“选取图片”的方式进行选取
Camera.getPicture(type).then(
          //返回一个imageURI,记录了照片的路径
function (imageURI) {
$scope.me.image = imageURI;
            //更新页面上的照片
$scope.img = imageURI;
$scope.$apply();
},
function (err) {
});
return true;
}
});
};

(2)上传函数中的核心代码

//新建文件上传选项,并设置文件key,name,type
var options = new FileUploadOptions();
options.fileKey="ffile";
options.fileName=$scope.me.image.substr($scope.me.image.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
//用params保存其他参数,例如昵称,年龄之类
var params = {};
params['name'] = $scope.me.name;
//把params添加到options的params中
options.params = params;
//新建FileTransfer对象
var ft = new FileTransfer();
//上传文件
ft.upload(
$scope.me.image,
encodeURI('some url'),//把图片及其他参数发送到这个URL,相当于一个请求,在后台接收图片及其他参数然后处理
uploadSuccess,
uploadError,
options);
//upload成功的话
function uploadSuccess(r) {
var resp = JSON.parse(r.response);
if(resp.status == 0){
     //返回前一页面
$navHistory.back();
}else{
$ionicPopup.alert({
title: 'Message',
cssClass: 'alert-text',
template: 'Upload fail!'
});
}
}
//upload失败的话
function uploadError(error) {
}

扩展:

这里有一篇文章,使用ng-cordova的file transfer插件进行上传和下载->http://santoshshinde2012.blogspot.sg/2015/03/file-upload-download-with-ng-cordova.html

ZH奶酪:ionic+angularJS+cordova(FileTransfer)上传图片【移动端】的更多相关文章

  1. WebApp开发框架Ionic+AngularJS+Cordova

    目前的手机APP有三类:原生APP.WebAPP.HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Ionic Ionic是一个新的.可以使用HTML5构建混合移动应用 ...

  2. HybridAPP开发框架Ionic+AngularJS+Cordova搭建

    Ionic Ionic是一个新的.可以使用HTML5构建混合移动应用的用户界面框架,它自称为是"本地与HTML5的结合".该框架提供了很多基本的移动用户界面范例,例如像列表(lis ...

  3. ZH奶酪:AngularJS/JavaScript上传图片【PC端】

    [功能介绍] 类似与修改个人信息的时候,点击头像,就可以完成选择照片.上传照片等步骤达到替换头像的目的. [运行流程] (1)点击头像 (2)选择头像 (3)点击“完成”,上传头像 1.HTML图片部 ...

  4. ZH奶酪:AngularJS判断checkbox/复选框是否选中并实时显示

    最近做了一个选择标签的功能,把一些标签展示给用户,用户选择自己喜欢的标签,就类似我们在购物网站看到的那种过滤标签似的: 简单的效果如图所示: 首先看一下html代码: <!DOCTYPE htm ...

  5. Cordova Ionic AngularJS

    实践分享:开始用Cordova+Ionic+AngularJS开发App http://www.cocoachina.com/webapp/20150707/12395.html

  6. [目录]hybrid app 开发实战(基于ionic,cordova,angularjs)

    序:为什么要写这个系列 第一章:hybrid app开发之技术选型 第二章:ionic,cordova,phonegap关系浅析 第三章:ionic环境搭建之windows篇 第四章:ionic环境搭 ...

  7. Mac下安装ionic和cordova,并生成iOS项目

    为了开发HTML5,除了最新使用React Native等之外,目前首选的为稳定的ionic+Angularjs来开发iOS和android. Ionic(ionicframework一款接近原生的H ...

  8. 混合开发 Hybird Ionic Angular Cordova web 跨平台 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. ionic 和cordova的区别是什么

    很多新朋友ionic基础教程都学完了,还是不知道ionic 和cordova 是什么关系 ionic是什么: Ionic(ionicframework)一款开源的Html5移动App开发框架,是Ang ...

随机推荐

  1. lua(wax框架) 适配 64位操作系统

    ======================使wax框架真正兼容64位系统========================== 苹果强制要求所有新提交的应用必须兼容64位,但原来使用lua的框架wax ...

  2. iOS sqlite 使用事务操作数据库

    业务层代码: //将解析的更新人员数据批量同步到数据库 +(void)operateCompUsers:(NSMutableArray*)operateCompUsers { sqliteHelper ...

  3. 【IntelliJ IDEA】idea或者JetBrains公司所有编辑器,设置其软件的字体样式

    操作如下: 修改完成后的效果: 可以看到修改以后的ide的效果:

  4. .NET:Assembly.CodeBase vs. Assembly.Location

    The CodeBase is a URL to the place where the file was found, while the Location is the path from whe ...

  5. 一篇linux的通讯文章

    今年的linux内核开发大会上,google的开发人员也上台做了名为“how google use linux”的演讲.我斗胆翻译注解一番――括号内为注解,欢迎读者斧正. 原文链接参见:http:// ...

  6. java单例模式实例

    什么是单例模式? 定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例场景,也就是说:确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象应该有且只有一 ...

  7. 罪恶黑名单第一季/全集The Blacklist迅雷下载

    罪恶黑名单 第一季 The Blacklist Season 1 (2013)本季看点:几十年来,绰号「红魔」(Red)的前军事情报官员Raymond Reddington(James Spader) ...

  8. 同志亦凡人第一季/全集BQueer As Folk 1迅雷下载

    同志亦凡人 第一季 Queer as Folk Season 1 (2000) 本季看点:本剧叙述一群同志男女在美国匹兹堡的生活,剧情重心由原来三位男主角Brian,Michael,Justin之间的 ...

  9. Asp.Net中使用Couchbase——Memcached缓存入门篇

    本文个人同步博客地址: http://aehyok.com/Blog/Detail/96.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文 ...

  10. verilog语法学习目录

    verilog语法实例学习(1) Verilog中的注释 Verilog中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类型 ...