我正在使用SendIntent plugin for capacitor(https://github.com/carsten-klaffke/send-intent)从其他应用程序接收共享数据到我的android capacitor应用程序。当我共享文本数据时,它工作正常,但当我尝试共享图片时,我无法使用它在url属性中发送的路径来创建File对象。
我已经尝试了几种不同的方法来创建一个blob使用它发送的路径,然后创建一个文件使用new File([blob], 'name', type)
,他们都没有工作.根据插件的文档,使用Filesystem.readFile()
(另一个电容器插件),我相信它在数据属性中返回一个base64编码的字符串。我尝试使用以下方法将base64字符串转换为blob:
const { data } = await Filesystem.readFile({
path: resultUrl
});
const bytes = new Array(data.length);
for (var x = 0; x < data.length; x++) {
bytes[x] = data.charCodeAt(x);
}
const arr = new Uint8Array(bytes);
const blob = new Blob([arr], {type: shareObject.type});
const sharedFile = new File([blob], resultUrl.split('/').pop(), {type: blob.type});
当我退出sharedFile.name和sharedFile.size时,它们都与我试图共享的图像一致,但当我尝试在视图中显示时,我无法在应用程序中看到该图像。
我是否遗漏了什么?从与SendIntent共享的图像创建javascript File
对象的最佳方法是什么?
TIA
1条答案
按热度按时间ffscu2ro1#
你可以使用
convertFileSrc(...)
来实现:顺便说一句:如果你可以共享字符串,你也可以直接以Base64格式共享图像。