正在做一个跨平台的应用,需要使用phonegap进行文件的一些基本操作。
需求如下:可以选择本地图片,或者从相机选择图片,并进行显示在本地,然后上传到服务器,以及可以从服务器下载图片显示出来,如果本地之前下过,从缓存中取之前的文件。
对于相机本地API的调用,可以通过phonegap提供的getPicture以及captureImage进行处理。这两个的区别,我个人理解,前者是可以从相机或者相册取出图片放在cache目录中,后者直接从相机生成图片到机器上。
然后对文件操作的时候,phonegap提供了太多的类,在java中操作很简单的file类,在这里实现很复杂,有很多很多的回调函数,并且少很多方便的函数,例如没有isExists类似的函数。
网络上传,下载也有对应的phonegap API---FileTransfer。
这里记录在实际使用中,遇到的对文件操作的部分,在一个img中显示一张本地图片,如果找不到本地图片,就从网络下载。
本文含有的方法:
1.使用phonegap进行相机,相册调用,选择图片并显示
2.使用phonegap进行文件上传和下载
3.使用phonegap进行目录,文件的操作
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="jquery/jquery.mobile-1.2.0.css" />
<script src="jquery/jquery-1.7.1.min.js"></script>
<script src="jquery/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
var pictureSource; // getPicture:数据来源参数的一个常量
var destinationType; // getPicture中:设置getPicture的结果类型
function onDeviceReady() {
pictureSource = navigator.camera.PictureSourceType;
destinationType = navigator.camera.DestinationType;
}
var pickUrl;
function fromCamera(source){
navigator.camera.getPicture(function(imageURI){
var largeImage = document.getElementById('smallImage');
largeImage.style.display = 'block';
largeImage.src = imageURI;
pickUrl = imageURI;
}, function(){
if(source==pictureSource.CAMERA)
console.log('加载照相机出错!');
else
console.log('加载相册出错!');
}, {
quality : 50,
destinationType : destinationType.FILE_URI,
sourceType : source
});
}
/*********上传图片***************/
function uploadFile() {
var imageURI = pickUrl;
if(!imageURI)
alert('请先选择本地图片');
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
options.mimeType = "image/jpeg";
var ft = new FileTransfer();
ft.upload(
imageURI,
encodeURI('http://192.168.93.114:1988/shandongTree/upload.jsp'),
function(){ alert('上传成功!');},
function(){ alert('上传失败!');},
options);
}
/**********下载相片***********/
function downloadPic(sourceUrl,targetUrl){
var fileTransfer = new FileTransfer();
var uri = encodeURI(sourceUrl);
fileTransfer.download(
uri,targetUrl,function(entry){
var smallImage = document.getElementById('smallImage');
smallImage.style.display = 'block';
smallImage.src = entry.fullPath;
},function(error){
console.log("下载网络图片出现错误");
});
}
function localFile() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
//创建目录
fileSystem.root.getDirectory("file_mobile/download", {create:true},
function(fileEntry){ },
function(){ console.log("创建目录失败");});
var _localFile = "file_mobile/download/testtest4.jpg";
var _url = "http://192.168.93.114:1988/shandongTree/download.jsp?pId=13";
//查找文件
fileSystem.root.getFile(_localFile, null, function(fileEntry){
//文件存在就直接显示
var smallImage = document.getElementById('smallImage');
smallImage.style.display = 'block';
smallImage.src = fileEntry.fullPath;
}, function(){
//否则就到网络下载图片!
fileSystem.root.getFile(_localFile, {create:true}, function(fileEntry){
var targetURL = fileEntry.toURL();
downloadPic(_url,targetURL);
},function(){
alert('下载图片出错');
});
});
}, function(evt){
console.log("加载文件系统出现错误");
});
}
</script>
</head>
<body>
<!-- pege 1 -->
<a data-inline='true'
href="javascript:fromCamera(pictureSource.PHOTOLIBRARY)" data-role="button">来自相册</a>
<a data-inline='true'
href="javascript:fromCamera(pictureSource.CAMERA)" data-role="button">来自相机</a>
<a data-inline='true'
href="javascript:localFile()" data-role="button">显示缓存图片,没有则下载</a>
<a data-inline='true'
href="javascript:uploadFile()" data-role="button">上传图片</a>
<div style='height:200px;width:200px;border:1px solid green;align:center;'>
<img
style="width: 160px; height: 160px;" id="smallImage"
src="" />
</div>
</body>
</html>
分享到:
相关推荐
自己写的最简单的PhoneGap Demo,环境有问题的可以下载尝试~~
PhoneGap html5 拍照上传DEMO
demo,原生创建phonegap工程源码
phonegap in android.
网上找的使用phonegap 打包的一个android 图书商城效果示例,效果挺炫的,不怎么适合初学者,看看写法还行。找了一上午才找到这一个示例。学web app 真心难。
该例子主要简单的使用phonegap录音,并实现上传到服务器已经下载到手机客户端下
另外要说的是 我加的这个jar包是包含了源码的 所以文件有800多K 如果大家嫌弃大的话 自己自己去百度下载别人导的jar包 我等下上传可以直接用Eclipse导jar包的工程包 本人的下载积分快没了 所以设置5个资源分 大家...
使用phoneGap 在android的file:///data/data/com.example.ark_test_write/lockfile.txt路径下将内容写入lockfile.txt文件
自己写的一个PhoneGap Camera插件调用 Demo,实现拍照/图库获取图片功能,编译通过~~~具体实现我博客里面有
phoneGap环境搭建,详细请看:http://blog.csdn.net/dawanganban/article/details/18271981
phonegap选择文件及上传文件插件实现,android studio工程,导入的时候请选择upload/platforms/android目录;选择文件兼容android6.0+闪退的情况,上传文件只是提交文件到服务器,服务器端的上传方法需要自己实现。
phonegap文件上传(Java,PHP)
Phonegap API Demo,在官网上的demo中有许多是有问题的,这个是关于Phonegap API的所有demo,希望能够对大家有所帮助。 原下载资源不全,重新上传全部demo!
phoneGap 新浪微博的页面Demo
PhoneGap js调用 android的demo demo简单易懂,可以直接运行的
phonegap在android的录音照相录像demo,功能简单易懂,主要看懂html里的就行,小白笔记大神勿喷
phonegap5.4.1(cordova)拍照并且上传功能的一个Android应用demo,同时附带了Java后台接收文件的代码