This commit is contained in:
yumoqing 2026-04-09 08:12:53 +08:00
parent 32add5ddb4
commit a2dfc23666
2 changed files with 29 additions and 6 deletions

View File

@ -8,7 +8,7 @@ import aiofiles
import json import json
import time import time
import base64 import base64
from urllib.parse import quote
from appPublic.worker import get_event_loop from appPublic.worker import get_event_loop
from appPublic.folderUtils import _mkdir from appPublic.folderUtils import _mkdir
from appPublic.base64_to_file import base64_to_file, getFilenameFromBase64 from appPublic.base64_to_file import base64_to_file, getFilenameFromBase64
@ -212,6 +212,10 @@ async def downloadfile2url(request, url, headers=None, params=None, data={}, met
url = env.entire_url('/idfile?path=') + env.quote(webpath) url = env.entire_url('/idfile?path=') + env.quote(webpath)
return url return url
def get_baseurl():
baseurl = os.environ.get('BASEURL')
return baseurl
async def base642file(b64str): async def base642file(b64str):
filename = getFilenameFromBase64(b64str) filename = getFilenameFromBase64(b64str)
if ',' in b64str: if ',' in b64str:
@ -223,4 +227,24 @@ async def base642file(b64str):
await f.write(binary_data) await f.write(binary_data)
return fpath return fpath
async def b64media2url(request, mediafile):
# env = request._run_ns
# entire_url = env.entire_url
if mediafile.startswith('http://') or mediafile.startswith('https://'):
return mediafile
webpath = mediafile
if mediafile.startswith('data:'):
fpath = await base642file(mediafile)
webpath = FileStorage().webpath(fpath)
elif len(mediafile) > 8000:
e = Exception(f'mediafile is not a media file')
exception(f'{e}')
return ''
if request:
url = entire_url('/idfile?path=') + quote(webpath)
return url
baseurl = get_baseurl()
if baseurl:
return f'{baseurl}/idfile?path={quote(mediafile)}'
return f'/idfile?path={quote(mediafile)}'

View File

@ -37,6 +37,7 @@ import datetime
from openpyxl import Workbook from openpyxl import Workbook
from tempfile import mktemp from tempfile import mktemp
from base64_to_file import hex2base64
from appPublic.jsonConfig import getConfig from appPublic.jsonConfig import getConfig
from appPublic.dictObject import DictObject from appPublic.dictObject import DictObject
from appPublic.Singleton import GlobalEnv from appPublic.Singleton import GlobalEnv
@ -77,7 +78,7 @@ from .error import (
from .filetest import current_fileno from .filetest import current_fileno
from .filedownload import path_download, file_download, file_response from .filedownload import path_download, file_download, file_response
from .filestorage import FileStorage, downloadfile2url from .filestorage import FileStorage, downloadfile2url, get_baseurl, b64media2url
from .serverenv import ServerEnv from .serverenv import ServerEnv
def server_error(errcode): def server_error(errcode):
@ -105,10 +106,6 @@ def basic_auth_headers(user, passwd):
"Authorization":ba.encode() "Authorization":ba.encode()
} }
def get_baseurl():
baseurl = os.environ.get('BASEURL')
return baseurl
async def stream_response(request, async_data_generator, content_type='text/html'): async def stream_response(request, async_data_generator, content_type='text/html'):
res = StreamResponse() res = StreamResponse()
if content_type: if content_type:
@ -335,6 +332,8 @@ def initEnv():
g.return_error = return_error g.return_error = return_error
g.openai_401 = openai_401 g.openai_401 = openai_401
g.get_baseurl = get_baseurl g.get_baseurl = get_baseurl
g.hex2base64 = hex2base64
g.b64media2url = b64media2url
g.openai_403 = openai_403 g.openai_403 = openai_403
g.openai_400 = openai_400 g.openai_400 = openai_400
g.openai_429 = openai_429 g.openai_429 = openai_429