2017-08-08 43 views
1

好的,在这里。我正在处理一个离子项目。在这个特定的场景中,我们正在处理测试Android版本的应用程序。我可以从文件系统映像就好了,他们回来的字符串URL,它看起来像这样的形式,Ionic 3文件权限

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是有效的。

回答

0

所以事实证明,你不能用file.readAsArrayBuffer使用内容url,而必须先将url解析为readAsArrayBuffer可以理解的内容。为此,我使用了ionic native filePath plugin

一旦它被安装,并列入地方,我需要它的页面,我用我的网址的

filePath.resolveNativePath(url) 

方法,因为这会返回一个承诺,我链式我readAsArrayBuffer到随后的语句前面加上。我不得不使用if语句来为内容url(其中需要resolveNativePath)和非内容url已经工作的分支路径。

这个解决方案的工作原理据我所知。