Javascript 将createObjectURL生成的URL转换为base64

Javascript 将createObjectURL生成的URL转换为base64,javascript,performance,javascript-objects,Javascript,Performance,Javascript Objects,将从函数createObjectURL生成的URL转换回base64的最佳方式是什么 let url = window.URL.createObjectURL(file) console.log(url) 上面的代码生成如下URL blob:https://s.codepen.io/d3e427c6-9aee-4f07-957c-3c928ff713c2 我所知道的将其转换回实际blob或base64的唯一方法是使用fetch调用相同的URL,如下所示 fetch(window.URL

将从函数
createObjectURL
生成的URL转换回base64的最佳方式是什么

 let url = window.URL.createObjectURL(file)
 console.log(url)
上面的代码生成如下URL

blob:https://s.codepen.io/d3e427c6-9aee-4f07-957c-3c928ff713c2 
我所知道的将其转换回实际blob或base64的唯一方法是使用
fetch
调用相同的URL,如下所示

fetch(window.URL.createObjectURL(file))
  .then(res => res.blob())
  .then(blob => console.log(blob)

就我个人而言,我不喜欢上述方法,但我一直未能找到替代方法。有吗?

您必须使用
createObjectURL
?您是否有权访问实际文件,以便将其作为base64读取并避免此调用
createObjectURL
很棘手,而且容易发生内存泄漏,因为如果您不关闭文档或使用
revokeObjectURL
@Akrion清理,是的,我正在使用Redux,希望避免在存储中存储大量base64数据,因为我会有很多图像要存储,事情是你从一个文件中得到一个字符串,所以你必须从字符串中得到这个文件才能得到Base64,所以除非你在某处保留对该文件/Base64的引用,否则你必须再次得到它。如果您是通过函数获取文件,则可以通过lodash
\uu0.memoize
或类似方式进行缓存,以便缓存函数输出…只有在重新加载文档后,才会存在blob URL。几乎不需要把它存放在任何地方。