cordova插件file使用时遇到的一个平台相关的问题

本文介绍使用cordova-plugin-file插件从图库读取图片时,在Android与iOS平台间存在的图片路径差异问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用cordova-plugin-file可以帮助我们方便的操作app中的图片等文件,分享一下我在用该插件从图库读取图片时遇到的一个平台相关的小问题。

使用场景,我会在APP中新增一张图片,会有一个可点击的【保存】按钮,点击时将图片copy到自己新建的目录下。

在Android平台下(小米5),选中图片之后,系统的路径形式是:“file://路径+图片名.后缀名+?+时间戳”的方式。而iOS平台是一个“file://路径+图片名.后缀名”的方式。

在Android平台下需要对图片路径字符串进行截取,把?后面的字符串截取调,只保留前面部分。

 1 // fileItem是一个图片对象,filePath是真正的路径
 2 if($ionicPlatform.isIOS){
 3      fileItem.filePath = fileItem.filePath.substring(0, fileItem.filePath.length);//iOS 平台选的图片生成路径中没有'?',返回-1, substring 不接受负值 会返回空
 4 
 5  }else {
 6      fileItem.filePath = fileItem.filePath.substring(0, fileItem.filePath.lastIndexOf("?"));
 7  }
 8 //或者
 9  fileItem.filePath = fileItem.filePath.substring(0, fileItem.filePath.lastIndexOf("?")=== -1 ? fileItem.filePath.length : fileItem.filePath.lastIndexOf("?"));
10 //这样不同平台下,文件路径就可以个格式化为"file://.../image.jpeg"

不可统一写成

fileItem.filePath = fileItem.filePath.substring(0, fileItem.filePath.lastIndexOf("?"));
这里在iOS平台下回返回-1,而substring不接受负数,否则会返回空数组[]。导致格式化的路径失败。

具体的cordova-plugin-file的更多操作文件的函数请参考

http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/index.html#file-system-layouts

https://github.com/apache/cordova-plugin-file

转载于:https://www.cnblogs.com/wjw-blog/p/7116106.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值