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 time
import base64
from urllib.parse import quote
from appPublic.worker import get_event_loop
from appPublic.folderUtils import _mkdir
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)
return url
def get_baseurl():
baseurl = os.environ.get('BASEURL')
return baseurl
async def base642file(b64str):
filename = getFilenameFromBase64(b64str)
if ',' in b64str:
@ -223,4 +227,24 @@ async def base642file(b64str):
await f.write(binary_data)
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 tempfile import mktemp
from base64_to_file import hex2base64
from appPublic.jsonConfig import getConfig
from appPublic.dictObject import DictObject
from appPublic.Singleton import GlobalEnv
@ -77,7 +78,7 @@ from .error import (
from .filetest import current_fileno
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
def server_error(errcode):
@ -105,10 +106,6 @@ def basic_auth_headers(user, passwd):
"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'):
res = StreamResponse()
if content_type:
@ -335,6 +332,8 @@ def initEnv():
g.return_error = return_error
g.openai_401 = openai_401
g.get_baseurl = get_baseurl
g.hex2base64 = hex2base64
g.b64media2url = b64media2url
g.openai_403 = openai_403
g.openai_400 = openai_400
g.openai_429 = openai_429