Javascript 如何将blob转换为base64?

Javascript 如何将blob转换为base64?,javascript,reactjs,blob,Javascript,Reactjs,Blob,Html 通过使用这个,我得到了错误 TypeError:未能在“FileReader”上执行“readAsDataURL”: 参数1不是“Blob”类型 是的,这是在react js中,但很容易理解为普通js(仅使用状态)不知道函数setImageServer()的作用,可能是因为URL.createObjectURL()返回DOMString(基本上是string类型): 因此,您的console.log正在打印blob对象的字符串表示,而不是blob本身。您可以尝试将DOMString

Html

通过使用这个,我得到了错误

TypeError:未能在“FileReader”上执行“readAsDataURL”: 参数1不是“Blob”类型


是的,这是在react js中,但很容易理解为普通js(仅使用状态)

不知道函数
setImageServer()
的作用,可能是因为
URL.createObjectURL()
返回
DOMString
(基本上是
string
类型):

因此,您的
console.log
正在打印blob对象的字符串表示,而不是blob本身。您可以尝试将
DOMString
转换为
base64


问题是我使用的是
image.src
,而不是像
respone.data那样使用服务器的直接响应

这就是解决办法

var image = document.getElementById('image')
                console.log(image.src)  // blob:http://localhost:3000/1c012729-b104-4fb5-a9a5-39aa782860b4
                var reader = new FileReader()
                reader.readAsDataURL(image.src)
                reader.onloadend = function () {
                    var base64data = reader.result
                    console.log(base64data)
                }
            
        

我认为这个问题可以很好地回答你的问题:setImageServer()是react StateCha,我现在明白了。希望这个答案能帮助你解决问题!您可以添加如何将该dom字符串转换为base64的代码吗?在上面的链接中,在“Unicode问题”下,
var blob=b64EncodeUnicode(image.src)
并用于
reader.readAsDataURL(blob)
,得到了相同的错误
<img id='image' src={ImageServer} alt='Girl in a jacket' /> //getting an actual image(its working)
var image = document.getElementById('image')
                console.log(image.src)  // blob:http://localhost:3000/1c012729-b104-4fb5-a9a5-39aa782860b4
                var reader = new FileReader()
                reader.readAsDataURL(image.src)
                reader.onloadend = function () {
                    var base64data = reader.result
                    console.log(base64data)
                }
            
        
  axios
                .get(RequestURL, { responseType: 'blob', withCredentials: false })
                .then((response) => {
                    console.log(response.data)
                    let imgData = window.URL.createObjectURL(response.data)
                    setImageServer(imgData)
                    var reader = new FileReader()
    
                    reader.readAsDataURL(response.data)
                    reader.onloadend = function () {
                        var base64data = reader.result
                        console.log(base64data)
                    }
                })