From 5b0e28f40179545c90c2d14d10e839e37cbc4630 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 4 Sep 2025 17:19:02 +0800 Subject: [PATCH] bugfix --- appPublic/base64_to_file.py | 81 +++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/appPublic/base64_to_file.py b/appPublic/base64_to_file.py index 1dba366..d647869 100644 --- a/appPublic/base64_to_file.py +++ b/appPublic/base64_to_file.py @@ -1,49 +1,50 @@ import os +import re import base64 from appPuyblic.uniqueID import getID -def getFilenameFromBase64(base64String) { +MIME_EXT = { + # 图片 + "image/jpeg": "jpg", + "image/png": "png", + "image/gif": "gif", + "image/webp": "webp", + "image/bmp": "bmp", + "image/svg+xml": "svg", + "image/x-icon": "ico", + "image/tiff": "tiff", + + # 音频 + "audio/mpeg": "mp3", + "audio/wav": "wav", + "audio/ogg": "ogg", + "audio/webm": "weba", + "audio/aac": "aac", + "audio/flac": "flac", + "audio/mp4": "m4a", + "audio/3gpp": "3gp", + + # 视频 + "video/mp4": "mp4", + "video/webm": "webm", + "video/ogg": "ogv", + "video/x-msvideo": "avi", + "video/quicktime": "mov", + "video/x-matroska": "mkv", + "video/3gpp": "3gp", + "video/x-flv": "flv", +} + +def getFilenameFromBase64(base64String): // Extract MIME type from data URL - const mimeType = base64String.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/) - ext = '' - if (mimeType && mimeType[1]) { - const mime = mimeType[1] - const mimeToExtension = { - # 图片 - "image/jpeg": "jpg", - "image/png": "png", - "image/gif": "gif", - "image/webp": "webp", - "image/bmp": "bmp", - "image/svg+xml": "svg", - "image/x-icon": "ico", - "image/tiff": "tiff", - - # 音频 - "audio/mpeg": "mp3", - "audio/wav": "wav", - "audio/ogg": "ogg", - "audio/webm": "weba", - "audio/aac": "aac", - "audio/flac": "flac", - "audio/mp4": "m4a", - "audio/3gpp": "3gp", - - # 视频 - "video/mp4": "mp4", - "video/webm": "webm", - "video/ogg": "ogv", - "video/x-msvideo": "avi", - "video/quicktime": "mov", - "video/x-matroska": "mkv", - "video/3gpp": "3gp", - "video/x-flv": "flv", - } - - ext = mimeToExtension.get(mime, '') - } + mimeType = base64String.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/) + match = re.match(r"data:(.*?);base64,(.*)", base64String) + if not match: + raise ValueError("不是合法的 base64 Data URL") + mime_type, b64_data = match.groups() + ext = MIME_EXT.get(mime_type, mime_type.split("/")[-1]) name = getID() - fname = f'{name}{ext}' + fname = f'{name}.{ext}' return fname }