Cordova Camera Plugin Android将额外信息附加到FILE_URI

时间:2016-09-01 16:33:09

标签: android cordova ionic-framework android-camera cordova-plugins

我在Ionic应用程序中使用Cordova Camera Plugin。一切都在iOS上按预期工作。在Android上,当sourceType设置为 CAMERA 且destinationType设置为 FILE_URI 时,它会按预期工作,返回如下路径: 文件:///storage/emulated/0/Android/data/com.myappname.myapp/cache/imageName.jpg

但是,当sourceType设置为 PHOTOLIBRARY SAVEDPHOTOALBUM 且目标类型设置为 FILE_URI 时,它会返回一个额外的路径文件末尾的信息(即查询字符串),无法加载和使用该文件(即使用CordovaFileTransfer)。它返回的路径是这样的: 文件:///storage/emulated/0/Android/data/com.myappname.myapp/cache/image.jpg 12764830288374

问题是最后的查询字符串?12764830288374 。我知道这是针对浏览器中的缓存问题而做的,但为什么Cordova Camera会以这种方式返回FILE_URI以及可以采取哪些措施来更改它?

我意识到我可以在问号之后简单地去除路径上的所有内容,但这似乎是一个hacky解决方案。我想知道为什么它会以这种方式返回路径以及如何正确地修复它。

注意:我也尝试将其作为NATIVE_URI返回,同样的问题也适用 - 它会在文件路径的末尾附加一个带有数字列表的问号,以防止cordovaFileTransfer正确上传文件。

1 个答案:

答案 0 :(得分:0)

我不知道为什么它出现在这个特定的例子中,但是;

在此末尾添加一个随机数可防止浏览器缓存使用旧版本的文件。这非常有用,因为如果你要拍一张新照片并尝试显示它,你很可能会看到旧图片。

这基本上是一个" hack"围绕浏览器缓存。不知何故,引擎盖下的系统正在帮你一个忙。由于每次URLs不同时数字都不同,即使文件是相同的。浏览器仅缓存$( "#more" ).click(function() { var qtt = parseInt($('#quantity').val(), 10); $('#quantity').val(qtt+1); }); $( "#less" ).click(function() { var qtt = parseInt($('#quantity').val(), 10); if (qtt > 0) { //does not allow negative values $('#quantity').val(qtt-1); } });