First Commit. Duplicate bunext-sqlite preset
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
export default async function bufferFromBase64(
|
||||
base_64: string,
|
||||
): Promise<{ buffer: Buffer; ext: string }> {
|
||||
let mimeType = "";
|
||||
let data = base_64;
|
||||
|
||||
const dataUrlMatch = base_64.match(
|
||||
/^data:([^;]+);base64,([\s\S]+)$/i,
|
||||
);
|
||||
|
||||
if (dataUrlMatch?.[1] && dataUrlMatch[2]) {
|
||||
mimeType = dataUrlMatch[1].trim().toLowerCase();
|
||||
data = dataUrlMatch[2];
|
||||
}
|
||||
|
||||
const buffer = Buffer.from(data, "base64");
|
||||
|
||||
let ext = "bin";
|
||||
if (mimeType.includes("image/jpeg") || mimeType.includes("image/jpg"))
|
||||
ext = "jpeg";
|
||||
else if (mimeType.includes("image/png")) ext = "png";
|
||||
else if (mimeType.includes("image/webp")) ext = "webp";
|
||||
else if (mimeType.includes("image/gif")) ext = "gif";
|
||||
else if (mimeType.includes("image/svg")) ext = "svg";
|
||||
else if (mimeType.includes("application/pdf")) ext = "pdf";
|
||||
else if (
|
||||
mimeType.includes(
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml",
|
||||
)
|
||||
)
|
||||
ext = "docx";
|
||||
else if (
|
||||
mimeType.includes(
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml",
|
||||
)
|
||||
)
|
||||
ext = "xlsx";
|
||||
else if (mimeType.includes("text/csv")) ext = "csv";
|
||||
else if (mimeType.includes("text/markdown")) ext = "md";
|
||||
else if (mimeType.includes("text/plain")) ext = "txt";
|
||||
else if (mimeType.includes("/")) {
|
||||
ext = mimeType.split("/").pop()?.split("+")[0] || "bin";
|
||||
}
|
||||
|
||||
return { buffer, ext };
|
||||
}
|
||||
Reference in New Issue
Block a user