将 Ionic 视频 fileURI 转换为 dataURL,用于 Firebase 上传
Translating Ionic video fileURI to dataURL, for Firebase upload
我有一个 fileURI,我正在尝试将其转换为 dataURL,以便我可以将其上传到 Firebase。
目前我得到了 /var/mobile/Containers/Data/Application/69BCC8B8-D539-4BA3-AD6B-B3ECBD8DEDE9/Library/Caches/myvideo_17.mp4
的路径,但我需要将其转换为某种方式(BLOB、字符串等...),以便我可以将视频上传到 Firebase。
我一直在摆弄 Cordova 文件插件,但我似乎无法输入正确的信息来让它输出文件 dataUrl...
如有任何帮助,我们将不胜感激。
所以在休假几周后,回到这个问题上,我想通了这个问题。
事实证明,我一直在使用的插件正在剥离字符串的 VERY 重要 file://
部分的 fileURI(我以前没有使用过) .所以我只剩下 /var/mobile/Containers/Data/Application/69BCC8B8-D539-4BA3-AD6B-B3ECBD8DEDE9/Library/Caches/myvideo_17.mp4
.
因此在修复字符串之后(就像您在使用 base64Url 时所做的那样)。我最终得到以下结果:
'file://' + fileURI
;
总而言之,我的代码现在看起来像这样:
resolveFileSystemUrl(media){
let fixed = 'file://' + media;
this.file.resolveLocalFilesystemUrl(fixed)
.then(result => {
this.resolveFileEntry(result);
}).catch(err => {console.error('Error resolving the file system url'); });
}
resolveFileEntry(res) {
res.file((resFile) => {
let reader = new FileReader();
reader.readAsDataURL(resFile);
reader.onloadend = (evt: any) => {
// the base64 of the video is: evt.target.result
}
});
}
我有一个 fileURI,我正在尝试将其转换为 dataURL,以便我可以将其上传到 Firebase。
目前我得到了 /var/mobile/Containers/Data/Application/69BCC8B8-D539-4BA3-AD6B-B3ECBD8DEDE9/Library/Caches/myvideo_17.mp4
的路径,但我需要将其转换为某种方式(BLOB、字符串等...),以便我可以将视频上传到 Firebase。
我一直在摆弄 Cordova 文件插件,但我似乎无法输入正确的信息来让它输出文件 dataUrl...
如有任何帮助,我们将不胜感激。
所以在休假几周后,回到这个问题上,我想通了这个问题。
事实证明,我一直在使用的插件正在剥离字符串的 VERY 重要 file://
部分的 fileURI(我以前没有使用过) .所以我只剩下 /var/mobile/Containers/Data/Application/69BCC8B8-D539-4BA3-AD6B-B3ECBD8DEDE9/Library/Caches/myvideo_17.mp4
.
因此在修复字符串之后(就像您在使用 base64Url 时所做的那样)。我最终得到以下结果:
'file://' + fileURI
;
总而言之,我的代码现在看起来像这样:
resolveFileSystemUrl(media){
let fixed = 'file://' + media;
this.file.resolveLocalFilesystemUrl(fixed)
.then(result => {
this.resolveFileEntry(result);
}).catch(err => {console.error('Error resolving the file system url'); });
}
resolveFileEntry(res) {
res.file((resFile) => {
let reader = new FileReader();
reader.readAsDataURL(resFile);
reader.onloadend = (evt: any) => {
// the base64 of the video is: evt.target.result
}
});
}