13

I have to send a Blob as a String and convert it back to an Blob. The method blob.text() returns a promise with it's content as a String. But how can i convert this string back to a blob? I want to convert it into an image data url.

https://developer.mozilla.org/en-US/docs/Web/API/Blob

2 Answers 2

30

To convert a string to a blob, you use the new Blob interface:

const blob = new Blob([string], {
  type: 'image/jpeg' // or whatever your Content-Type is
});

See this section of the document you linked to.

If you have a Blob object called blob, blob.type will give its content type. So you could deconstruct and reconstruct it as follows:

const string = await blob.text();
const type = blob.type;
const blob2 = new Blob([string], {type: type});
Sign up to request clarification or add additional context in comments.

2 Comments

Excellent! Way simpler than using FileReader, as suggested by most google results.
Doesn't seem to work for images in chrome.
3
const base64Data = "dGVRAXXRoZXIUl";

Depending on the format of the base64 string, you might need to prepend content type data. For example, a JPEG image

const base64Return = await fetch(`data:image/jpeg;base64,${base64Data}`);

Then, convert the response to a blob

const blob = await base64Return.blob();

For "text/html" format, for example, you can get the raw text

const text = await base64Return.text();

2 Comments

fetch argument should be quoted - fetch("data:image/jpeg;base64,${base64Data}")
should i use the return value of blob.text() as base64Data?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.