我们可以通过cordova提供的插件调用摄像头或图库选择需要的图片上传,按cordova官方的方法,每次选择完后就直接上传,这并不符合用户的习惯,最好的用户习惯是用户选择完需要的图片,并可在本地预览,接着用户再次打开摄像头或图库再次选择图片,接着预览,对于不需要的图片删除,最后确定可以后,再一次性上传所有图片。显然这种方式,cordova是不支持,那要如何实现呢,以下是我的方法:

通过调用$cordovaImagePicker.getPictures该方法打开图库,获得图片的URL地址,ps:相机原理相同
$cordovaImagePicker.getPictures(options).then(function(imageURI) {
for(var i=0; i<imageURI.length; i++){
rLFSURL(imageURI[i]);
}
}, function(err) {
if (err.message && (err.message.toString().indexOf('cancelled') < 0)) {
$scope.popTips('打开失败','打开图片遇到问题');
}
});
上面方法可以获得一组图片地址列表,接下来要做的就是把这些图片转成二进制流存储在本地,如下:
function rLFSURL(imageURI){
window.resolveLocalFileSystemURL(imageURI, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
//需要将图片路径转换为二进制流,并且指定类型为图像格式(还有其他格式,如文本格式等等)
var the_file = new Blob([e.target.result ], { type: "image/jpeg" } );
//存储图片二进制流
CacheData.setImgFileList(the_file);
//存储图片地址用于预览
CacheData.setImageURIList(imageURI);
};
reader.readAsArrayBuffer(file);
}, function(e){$scope.errorHandler(e)});
}, function(e){$scope.errorHandler(e)});
}
上面的关键是var the_file = new Blob([e.target.result ], { type: "image/jpeg" } );,这是将图片转化为二进制,然后我用事先定义好的方法CacheData.setImgFileList()和CacheData.setImageURIList()把转化后的二进制流及图片存储起来。主意new Blob()方法并不兼容低版本的安卓系统。
如果再增加图片,我们只需要把他push进我们的数组里即可,删除的话就splice(index, 1)掉,这样待用户操作完后,点提交,我就把这些参数append进new FormData()里就OK了,如下
for(var i=0; i < CacheData.getImgFileList().length; i++){
formDataByImage.append("files", CacheData.getImgFileList()[i],"images.jpg");
}
//以下是表单参数
formDataByImage.append("tenantId", 1);
formDataByImage.append("facilityIdentify", "217ae60e5bc746f");
//formDataByImage.append("nodeName", nodeName);
formDataByImage.append('sessiontoken', formData.sessiontoken);
formDataByImage.append('method', 'fax.upload');
后台接收的方法就跟input file提交表单一样,这里就不多写。
下面给大家补充下:Ionic 和cordova的区别是什么
很多新朋友ionic基础教程都学完了,还是不知道ionic 和cordova 是什么关系
ionic是什么:
Ionic(ionicframework)一款开源的Html5移动App开发框架,是AngularJS移动端解决方案,Ionic以流行的跨平台移动app开发框架phoengap为蓝本,让开发者可以通过命令行工具快速生成android ios移动app应用
phoengap是什么?
PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动.
可能有些新手还是不明白,继续往下看:
通俗的讲:ionic是一款基于angularjs的html5移动app开发框架
phonegap就是一款可以打包并且可以让js调用原生的移动app框架
问题来了?
那我不用命令安装ionic 可以使用ionic开发app吗?答案是可以得。
就可以把ionic当作一款html5 移动app框架,把phonegap/cordova 当作打包 并且调用原生的框架就可以了
至于:为什么ionic也可以打包,上面也说了,ionic的打包插件是基于phonegap/cordova的.
以上所述是小编给大家介绍的ionic cordova一次上传多张图片(类似input file提交表单)的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# ionic
# cordova
# 上传图片
# input
# 提交表单
# ionic2自定义cordova插件开发以及使用(Android)
# VS2015在升级到Update2之后运行Cordova项目异常的解决方案
# 教你用Cordova打包Vue项目的方法
# 详解cordova打包成webapp的方法
# cordova入门基础教程及使用中遇到的一些问题总结
# 表单
# 给大家
# 上传
# 完后
# 小编
# 就可以
# 是一个
# 这是
# 来了
# 最好的
# 在此
# 不需要
# 就不
# 说了
# 把他
# 不明白
# 我们可以
# 可以通过
# 我用
# 就把
相关文章:
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何快速查询网站的真实建站时间?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
安徽网站建设与外贸建站服务专业定制方案
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
开源网站制作软件,开源网站什么意思?
制作网站的模板软件,网站怎么建设?
公司网站制作价格怎么算,公司办个官网需要多少钱?
网站制作价目表怎么做,珍爱网婚介费用多少?
手机网站制作与建设方案,手机网站如何建设?
如何选择建站程序?包含哪些必备功能与类型?
定制建站哪家更专业可靠?推荐榜单揭晓
建站之星后台管理如何实现高效配置?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
制作企业网站建设方案,怎样建设一个公司网站?
如何通过FTP服务器快速搭建网站?
如何选择高性价比服务器搭建个人网站?
网站制作企业,网站的banner和导航栏是指什么?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
如何高效利用亚马逊云主机搭建企业网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何在阿里云虚拟服务器快速搭建网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何快速建站并高效导出源代码?
C#如何使用XPathNavigator高效查询XML
网站代码制作软件有哪些,如何生成自己网站的代码?
建站VPS能否同时实现高效与安全翻墙?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
网站制作免费,什么网站能看正片电影?
b2c电商网站制作流程,b2c水平综合的电商平台?
广州营销型建站服务商推荐:技术优势与SEO优化解析
建站之星如何助力网站排名飙升?揭秘高效技巧
长沙做网站要多少钱,长沙国安网络怎么样?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
实现虚拟支付需哪些建站技术支撑?
如何快速搭建高效香港服务器网站?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
如何零成本快速生成个人自助网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
无锡营销型网站制作公司,无锡网选车牌流程?
存储型VPS适合搭建中小型网站吗?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何用狗爹虚拟主机快速搭建网站?
建站之星如何开启自定义404页面避免用户流失?
如何通过VPS建站实现广告与增值服务盈利?
*请认真填写需求信息,我们会在24小时内与您取得联系。