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

Posted

技术标签:

【中文标题】Cordova Camera Plugin Android 将额外信息附加到 FILE_URI 的末尾【英文标题】:Cordova Camera Plugin Android appends extra information to the end of FILE_URI 【发布时间】:2017-01-09 15:23:40 【问题描述】:

我在 Ionic 应用程序中使用 Cordova 相机插件。在 ios 上一切正常。在 android 上,当 sourceType 设置为 CAMERA 并且 destinationType 设置为 FILE_URI 时,它按预期工作,返回如下路径: file:///storage/emulated/0/Android/data/com.myappname.myapp/cache/imageName.jpg

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

问题是最后的查询字符串 ?12764830288374。我知道这样做是为了解决浏览器中的缓存问题,但为什么 Cordova Camera 会以这种方式返回 FILE_URI 以及可以做些什么来更改它?

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

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

【问题讨论】:

【参考方案1】:

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

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

这本质上是围绕浏览器缓存的“破解”。不知何故,引擎盖下的系统正在帮您一个忙。由于每次url 不同时数字都不同,即使文件相同。浏览器只缓存URLs

【讨论】:

这将返回已保存在手机上的图像(来自 PHOTOGALLERY 或 SAVEDPHOTOALBUM),这意味着每张图片都有自己的名称。因此,每个 URL 中的文件名都不同。所以缓存不会是个问题吧? 我只是说这是一种用于强制更新缓存的策略。这就是“为什么会在那里?”的答案 知道了。那回答了那部分。知道如何通过 Cordova 相机摆脱它吗? string.split("?")[0]?

以上是关于Cordova Camera Plugin Android 将额外信息附加到 FILE_URI 的末尾的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cordova-plugin-camera (ALLMEDIA) 启用视频和图片

android cordova-plugin-camera 在 PNG 上添加黑色背景

Cordova Camera Plugin PhotoLibrary Android

(IOS) Cordova Camera Plugin 引用已删除的图像

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

查找cordova插件name