如何通过Web共享API共享单个Base64 URL图像?

时间:2020-04-16 12:16:23

标签: javascript typescript base64 share navigator

因此,我需要使用TypeScript上的Web Share API共享base64图像字符串。

如果我将base64字符串作为url参数传递,可以这样吗:

  var base64url = "data:image/octet-stream;base64,/9j/4AAQSkZ...."
  navigator.share({
    title: 'Hello',
    text: 'Check out this image!',
    url: base64url ,
  })

还是我需要具有文件数组并使用Web Share API v2?如果是这样,我该如何实现,我所拥有的只是一个base64字符串,而我发现的示例太混乱了。

在这件事上我是菜鸟,所以将不胜感激!

1 个答案:

答案 0 :(得分:1)

如评论中所述,在url字段中共享url最终不会为您的用户带来好结果。

您可以将Web Share API v2与以下代码一起使用:

const base64url = "data:image/octet-stream;base64,/9j/4AAQSkZ...."
const blob = await (await fetch(base64url)).blob();
const file = new File([blob], 'fileName.png', { type: blob.type });
navigator.share({
  title: 'Hello',
  text: 'Check out this image!',
  files: [file],
})

您可能需要根据实际的图片网址来调整扩展名和mime类型。

请注意,尽管v2当前仅在Android Chrome上可用(我找不到很好的资源,但我只是在一个项目中做到了)。 您可以使用navigator.canShare()在运行时检查可用性。