`

phonegap+JQM拍照并上传头像到服务器

阅读更多
工作中需要将用户头像上传到服务器。

需要这么几步:

1,点击img元素弹出Popup,选择拍照或从图片库中选择图片。

2,上传图片

在phonega中拍照需要camera插件。
上传文件需要file-transfer插件。

我在工程中安装的所有插件如下:
        cordova plugin add org.apache.cordova.device
	cordova plugin add org.apache.cordova.network-information
	cordova plugin add org.apache.cordova.battery-status
	cordova plugin add org.apache.cordova.geolocation
	cordova plugin add org.apache.cordova.dialogs
	cordova plugin add org.apache.cordova.camera
	cordova plugin add org.apache.cordova.media-capture
	cordova plugin add org.apache.cordova.media
	cordova plugin add org.apache.cordova.vibration
	cordova plugin add org.apache.cordova.globalization
	cordova plugin add org.apache.cordova.splashscreen
	cordova plugin add org.apache.cordova.inappbrowser
	cordova plugin add org.apache.cordova.file-transfer


下面完成第一步:
建立img元素,当点击该元素的时候跳转到#select_pic_page,#select_pic_page是个popup,
使用JQM是如下写法:
<div>
	<a href="#select_pic_page" data-rel="popup" data-position-to="window" data-transition="pop"><img id="face" style="width:110px;height:110px;" src="img/default_face.jpg" /></a>
	<div data-role="popup" id="select_pic_page" data-overlay-theme="a">
		<ul data-role="listview" data-icon="false">
			<li onclick="onFaceImgClick(0)" style="border-width:0;border-color:#666;border-bottom-width: 1px;"><a style="padding:16px;font-weight:normal;" href="#" data-rel="back">Take a picture</a></li>
			<li onclick="onFaceImgClick(1)" style="border-width:0;"><a style="padding:16px;font-weight:normal;" href="#" data-rel="back">Select From Photo Library</a></li>
		</ul>
	</div>			
</div>







点击popup中的选项,第一个是临时拍照,第二项是从图片库中选择,用flag区分。
function onFaceImgClick(flag){
//	var w=$("#my_profile_page #face").width();
//	var h=$("#my_profile_page #face").height();
	var w=440;
	var h=440;
	
	var quality = device.platform=="Android"?100:50;
//	log("device.platform="+device.platform+";quality====="+quality);
	var cameraOptions;
	if(flag==0){
		cameraOptions={	
				quality : quality,//ios为了避免部分设备上出现内存错误,quality的设定值要低于50。
				destinationType : Camera.DestinationType.FILE_URI,//FILE_URI,DATA_URL
				sourceType : Camera.PictureSourceType.CAMERA,//CAMERA,SAVEDPHOTOALBUM
				allowEdit : true,
				encodingType : Camera.EncodingType.JPEG,//JPEG,PNG
				targetWidth : w,
				targetHeight : h
		};
	}else{
		cameraOptions={	
				quality : quality,//ios为了避免部分设备上出现内存错误,quality的设定值要低于50。
				destinationType : Camera.DestinationType.FILE_URI,//FILE_URI,DATA_URL
				sourceType : Camera.PictureSourceType.PHOTOLIBRARY,//CAMERA,SAVEDPHOTOALBUM
				allowEdit : true,
				encodingType : Camera.EncodingType.JPEG,//JPEG,PNG
				targetWidth : w,
				targetHeight : h
		};
	}
	navigator.camera.getPicture( onCameraSuccess, onCameraError, cameraOptions);
}


获取图片成功后执行回调函数onCameraSuccess,参数imageURI是拍照成功后返回的图片路径
function onCameraSuccess(imageURI){//imageData
//	log("data==="+imageURI);
//	$("#my_profile_page #face").attr("src","data:image/jpeg;base64," + imageData);
	
	user.imgOriginalUrl=imageURI;
	$("#my_profile_page #face").attr("src",user.imgOriginalUrl);
//拍照成功后,需要上传文件
	var fileName=imageURI.substr(imageURI.lastIndexOf('/') + 1);
	var options = new FileUploadOptions();
	options.fileKey = "fieldName";//图片域名!!!
	if(fileName.indexOf('?')==-1){
		options.fileName = fileName;
	}else{
		options.fileName = fileName.substr(0,fileName.indexOf('?'));
	}
	
	 options.mimeType = "image/jpeg";
	//options.mimeType = "multipart/form-data";
	 options.chunkedMode = false;
	 
	 var params = {};
	 params.sid = user.sid;
	 params.fileType = "customer";
	 options.params = params;
	 
	 var uri = encodeURI(BASE_URL+"phoneCustomer/updateCustomerInfo.action?sid="+user.sid+"&fileType=customer");

	 var ft = new FileTransfer();
	 ft.upload(imageURI, uri, onFileUploadSuccess, onFileUploadFail, options);
}

function onCameraError(message){
	log('Failed because: ' + message);
}

function onFileUploadSuccess(result){
	log("========onFileUploadSuccess===========");
//	log("Code = " + result.responseCode+";Response = " + result.response+";Sent = " + result.bytesSent);
}
function onFileUploadFail(error){
	log("code = "+error.code+";upload error source = " + error.source+";upload error target = " + error.target);
}



在ios中,如果点击无法调出camera,请务必执行一下命令cordova build ios
  • 大小: 66.6 KB
  • 大小: 65.2 KB
分享到:
评论

相关推荐

    HTML5+PhoneGAP+JQM门店源代码框架

    HTML5+PhoneGAP+JQM门店源代码框架。 未完成,包括后台JSON部分。自己查找,后来我屏蔽掉了,但是效果是好的,由于模拟器太慢了,最后屏蔽了,但是代码可用。 开发环境Dreamweaver cs5.5.后台ASP.NET。

    PhoneGap+javascript+html5 扫描二维码

    在PhoneGap应用中,你可以将ZXing的JavaScript版集成到项目中,通过调用其API来捕获摄像头输入并解析二维码。 为了实现二维码扫描,你需要创建一个视图层,通常是全屏的`&lt;video&gt;`元素,用来显示摄像头的实时预览。...

    android+phonegap+jquery mobile

    【标题】:“Android + PhoneGap + jQuery Mobile” 这个项目标题揭示了一个使用三种技术栈构建的移动应用程序:Android、PhoneGap和jQuery Mobile。Android是Google主导的开源操作系统,主要用于智能手机和平板...

    PhoneGap+Jquery+Html5实现远程登录功能(附带源码)

    PhoneGap是一种开源框架,它允许开发者使用HTML5、JavaScript和CSS3等Web技术来构建原生的移动应用程序。...然而,为了保证应用的安全性和可靠性,开发者需要熟悉网络安全原则,并对服务器端接口进行妥善设计和实现。

    phonegap+websocket+tomcat实现推送功能

    总的来说,"phonegap+websocket+tomcat实现移动终端推送功能"项目涉及到的技术栈包括前端的PhoneGap应用开发、WebSocket的JavaScript客户端实现、后端的Tomcat服务器配置以及WebSocket的Java服务端编程。通过这一...

    Android Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.zip源码资源下载

    Android Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.zip源码资源下载Android Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.zip源码资源下载

    PhoneGap+jQueryMobile开发Android应用实例

    PhoneGap+jQueryMobile开发Android应用实例,搭建开发环境

    phonegap+jqueryMobilejs源码项目

    接着,使用命令行工具创建一个新的PhoneGap项目,并配置项目的配置文件`config.xml`。 2. **jQuery Mobile引入**:项目中会包含jQuery Mobile的CSS和JS库,这些文件通常会被链接到HTML文件中,以便为应用添加样式和...

    Android Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.zip项目安卓应用源码下载

    Android Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.zip项目安卓应用源码下载Android Phonegap+HTML5+CSS3+jQuer简单界面模板示例及源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习...

    用PhoneGap+jQueryMobile开发Android应用实例

    用PhoneGap+jQueryMobile开发Android应用实例,很好的android开发学习教材。

    PhoneGap+Jquery+Html5从照相机和手机相册获取图片

    例如,创建一个按钮触发拍照或选图操作,并在成功获取图片后更新页面: ```html 选择图片 &lt;div id="imagePreview"&gt;&lt;/div&gt; $(document).ready(function() { $('#getPic').click(function() { navigator.camera....

    phonegap+android开发环境配置

    如果使用真实设备,需要开启USB调试模式,并通过USB连接到电脑,运行`phonegap run android`命令即可部署应用。 总的来说,配置PhoneGap+Android开发环境需要安装JDK、Android SDK、可能的Eclipse/Android Studio,...

    PhoneGap+JQuery示例项目

    通过这个"PhoneGap+jQuery示例项目",开发者不仅可以掌握PhoneGap和jQuery的基础知识,还能进一步理解跨平台移动应用开发的流程和最佳实践,从而提升自己的技能并实现高效开发。对于初学者,这是一个很好的起点;...

    phonegap+html+appframework

    通过以上步骤,你可以构建一个简单的PhoneGap应用,它能从Node.js服务器获取JSON数据,并使用AppFramework展示在客户端。这个过程不仅涵盖了Web开发的基础,还展示了如何将Web技术应用于移动应用开发。随着对这些...

    phonegap框架简介与phonegap+Sencha源码实例 手机开发入门

    本资源包含有:PhoneGap框架简介、phonegap开发入门pdf(英文版)、外加一个phonegap+sencha-touch 的webapp 项目; 运行环境为:eclipse+jdk 1.5,模拟器为2.1。

    PhoneGap+Jquery mobile汇率计算器

    PhoneGap和jQuery Mobile是开发移动应用的两个重要工具,它们结合使用可以构建跨平台的、交互性强的移动应用。在本实例中,我们将探讨如何利用这两个技术创建一个汇率计算器。 PhoneGap是一个开源框架,它允许...

    phonegap+jqueryMobile例子

    1. **环境配置**:首先,开发者需要安装并配置PhoneGap和Apache Cordova(PhoneGap的基础),包括设置开发环境,如Node.js、Android SDK和相关的构建工具。 2. **项目初始化**:创建一个新的PhoneGap项目,这通常...

    PhoneGap+Jquery mobile

    7. **打包发布**:最后,当应用开发完成并通过测试后,可以使用PhoneGap CLI的`phonegap build`命令生成各个平台的安装包,然后提交到相应的应用商店进行分发。 总的来说,PhoneGap和jQuery Mobile的组合提供了一种...

    phoneGap+android+myeclipse+nodejs+ADT+SDK

    如何快速搭建一个不用原生js的移动应用平台,集打包,开发,发布一体。这个文档非常不错哦 不会的可以问我, 也可以给我留言哦.

Global site tag (gtag.js) - Google Analytics