gpt4 book ai didi

javascript - 使用 fetch API 请求 blob 图像并转换为 base64

转载 作者:行者123 更新时间:2023-12-05 00:51:16 36 4
gpt4 key购买 nike

我有一些图像将显示在 React 应用程序中。我向服务器执行 GET 请求,该服务器返回 BLOB 格式的图像。然后我将这些图像转换为 base64。最后,我在图像标签的 src 属性中设置了这些 base64 字符串。

最近我开始使用 Fetch API。我想知道是否有办法在“一次”中进行转换。

下面是一个例子来解释我到目前为止的想法和/或如果这甚至可以通过 Fetch API 实现。我还没有在网上找到任何东西。

  let reader = new window.FileReader();
fetch('http://localhost:3000/whatever')
.then(response => response.blob())
.then(myBlob => reader.readAsDataURL(myBlob))
.then(myBase64 => {
imagesString = myBase64
}).catch(error => {
//Lalala
})

最佳答案

FileReader.readAsDataURL的返回不是 promise 。你必须用旧的方式来做。

fetch('http://localhost:3000/whatever')
.then( response => response.blob() )
.then( blob =>{
var reader = new FileReader() ;
reader.onload = function(){ console.log(this.result) } ; // <--- `this.result` contains a base64 data URI
reader.readAsDataURL(blob) ;
}) ;
通用功能:
function urlContentToDataUri(url){
return fetch(url)
.then( response => response.blob() )
.then( blob => new Promise( callback =>{
let reader = new FileReader() ;
reader.onload = function(){ callback(this.result) } ;
reader.readAsDataURL(blob) ;
}) ) ;
}

//Usage example:
urlContentToDataUri('http://example.com').then( dataUri => console.log(dataUri) ) ;

//Usage example using await:
let dataUri = await urlContentToDataUri('http://example.com') ;
console.log(dataUri) ;

关于javascript - 使用 fetch API 请求 blob 图像并转换为 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44698967/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com