好吧,这就去。我正在处理一个 ionic 项目。在这个特定的场景中,我们正在处理测试应用程序的 Android 版本。我可以很好地从文件系统中获取图像,它们以字符串 url 的形式返回,看起来像这样,
content://com.android.providers.media.documents/document/image%3A5744
然后应该对文件进行 blob 并将其向上传递的处理器如下所示:
return this.file.readAsArrayBuffer(urlData.url, urlData.fileName)
.then((item) => {
return new Blob([new Uint8Array(item)]);
})
.catch((err) => {
console.log(err.message)
}).then((res)=>{
return new Blob([res])
})
但后来我得到错误 SECURITY_ERR,the documentation真的不谈了。
这适用于我用相机拍摄的照片,它们都有这样的 url
file:///storage/emulated/0/Android/data/<appname>/cache/1502211622334.jpg
问题是,据我所知,没有关于导致此错误的原因的文档。我不知道要更改什么才能使我的代码正常工作。我已经使用 checkFile 方法验证了 URI 是否有效。
最佳答案
因此,事实证明您不能将内容 url 与 file.readAsArrayBuffer 一起使用,而是必须首先将 url 解析为 readAsArrayBuffer 可以理解的内容。为此,我使用了 ionic native filePath plugin .
一旦它被安装并包含在我需要它的页面中,我就使用了
filePath.resolveNativePath(url)
我的 url 上的方法,因为这会返回一个 promise ,所以我将我的 readAsArrayBuffer 链接到前面的 then 语句上。我确实必须使用 if 语句来为内容 url(这需要 resolveNativePath)和已经工作的非内容 url 提供分支路径。
据我所知,此解决方案有效。
关于android - ionic 3 文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574181/