Oll*_*H-M 1 base64 typescript cordova-plugins ionic2
我正在尝试使用Cordova文件插件来读取保存在移动设备中的图像,这样我就可以获得它的base64编码,我需要远程存储它.问题是resolveLocalFilesystemUrl()方法,它应该提供一个File Entry对象,而不是似乎返回一个Entry对象,这意味着我无法调用它上面的文件.
下面是应该获取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);
})
})
Run Code Online (Sandbox Code Playgroud)
我收到以下Typescript错误,它告诉我resolveLocalFilesystemUrl()正在使用Entry对象解析,该对象没有文件方法.(插件文档说resolveLocalFilesystemUrl使用File Entry对象解析,并且这样的对象肯定有一个提供文件本身的文件方法):
Property 'file' does not exist on type 'Entry'.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我提供resolveLocalFilesystemUrl()的路径类型.我尝试了沿着/ var/mobile/Applications // Documents/path/to/file和cdvfile:// localhost/temporary/filename行的本地URL的完整路径 - 两者都不起作用
所以具体的问题是为什么不会解析LocalFilesystemUrl()为我提供一个文件入口对象,或者我是如何让它这样做的?更一般地说,如果上述方法不起作用,如何在Ionic 2中读取文件以便我可以获得它的base64版本.
谢谢!
我发现这个问题与Typescript有关.resolveLocalFilesystemUrl()实际上是使用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);
})
})
Run Code Online (Sandbox Code Playgroud)
请注意,我还必须使用encodedFile: any以便允许调用target.resultencodedFile
| 归档时间: |
|
| 查看次数: |
6022 次 |
| 最近记录: |