我正在尝试使用Cordova 文件插件读取移动设备中保存的图像,这样我就可以获得它的 Base64 编码,我需要远程存储它。问题在于,resolveLocalFilesystemUrl() 方法本应提供一个 File Entry 对象,但似乎返回一个 Entry 对象,这意味着我无法在其上调用 file。
这是应该获取 File Entry 对象的代码,以便我可以使用 file 方法来读取文件本身。
MediaCapture.captureImage().then((images)=>{
self.image = images[0].localURL;
File.resolveLocalFilesystemUrl(self.image).then((entry)=>{
entry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (encodedFile) {
var src = encodedFile.target.result;
src = src.split("base64,");
var contentAsBase64EncodedString = src[1];
};
reader.readAsDataURL(file);
})
}).catch((error)=>{
console.log(error);
})
})
我收到以下 Typescript 错误,它告诉我resolveLocalFilesystemUrl() 正在使用 Entry 对象进行解析,该对象没有文件方法。 (插件文档说resolveLocalFilesystemUrl使用File Entry对象进行解析,并且这样的对象肯定有一个提供文件本身的file方法):
Property 'file' does not exist on type 'Entry'.
我已经尝试过我提供的路径类型resolveLocalFilesystemUrl()。我已经尝试过沿着 /var/mobile/Applications//Documents/path/to/file 行的完整路径和沿着 cdvfile://localhost/temporary/filename 行的本地 URL - 都不起作用
所以具体的问题是为什么resolveLocalFilesystemUrl()不为我提供一个文件条目对象,或者我如何让它这样做?更一般地说,如果上述方法不起作用,我如何读取 Ionic 2 中的文件以便获得它的 Base64 版本。
谢谢你!
我发现这个问题与Typescript有关。 solveLocalFilesystemUrl() 实际上是使用 File Entry 对象进行解析(当我将本地 url 作为文件路径传递给它时),但 Typescript 认为它是一个 Entry 对象,并且不认为可以在其上调用 file() 。
下面通过告诉 Typescript 解决了这个问题entry
对象可以是任何类型,因此可以调用它的任何函数或属性。
MediaCapture.captureImage().then((images)=>{
self.image = images[0].localURL;
File.resolveLocalFilesystemUrl(self.image).then((entry: any)=>{
entry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (encodedFile: any) {
var src = encodedFile.target.result;
src = src.split("base64,");
var contentAsBase64EncodedString = src[1];
};
reader.readAsDataURL(file);
})
}).catch((error)=>{
console.log(error);
})
})
请注意,我还必须使用encodedFile: any
为了允许 target.result 被调用encodedFile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)