Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
/** | |
* break a base64 string into sub-components | |
*/ | |
export function extractBase64(base64: string = ""): { | |
// file format eg. video/mp4 text/html audio/wave | |
mimetype: string; | |
// file extension eg. .mp4 .html .wav | |
extension: string; | |
data: string; | |
buffer: Buffer; | |
blob: Blob; | |
} { | |
// Regular expression to extract the MIME type and the base64 data | |
const matches = base64.match(/^data:([A-Za-z-+0-9/]+);base64,(.+)$/) | |
if (!matches || matches.length !== 3) { | |
throw new Error("Invalid base64 string") | |
} | |
const mimetype = matches[1] || "" | |
const data = matches[2] || "" | |
const buffer = Buffer.from(data, "base64") | |
const blob = new Blob([buffer]) | |
// this should be enough for most media formats (jpeg, png, webp, mp4) | |
const extension = mimetype.split("/").pop() || "" | |
return { | |
mimetype, | |
extension, | |
data, | |
buffer, | |
blob, | |
} | |
} |