This commit is contained in:
yumoqing 2025-10-11 11:02:34 +08:00
parent c82b30476d
commit aac5d31d97
2 changed files with 12 additions and 3 deletions

View File

@ -182,14 +182,14 @@ def file_realpath(path):
fs = FileStorage() fs = FileStorage()
return fs.realPath(path) return fs.realPath(path)
async def downloadfile(url, headers=None, params=None, data={}): async def downloadfile(url, headers=None, params=None, data={}, method='GET'):
filename = url.split('/')[-1] filename = url.split('/')[-1]
fs = FileStorage() fs = FileStorage()
fpath = fs._name2path(filename, userid='tmp') fpath = fs._name2path(filename, userid='tmp')
try: try:
async with aiofiles.open(fpath,'wb') as f: async with aiofiles.open(fpath,'wb') as f:
shc = StreamHttpClient() shc = StreamHttpClient()
async for chunk in shc('GET', url, async for chunk in shc(method, url,
headers=headers, headers=headers,
params=params, params=params,
data=data): data=data):
@ -199,6 +199,14 @@ async def downloadfile(url, headers=None, params=None, data={}):
exception(f'save {url} to {fpath} exception:{e}') exception(f'save {url} to {fpath} exception:{e}')
raise e raise e
async def downloadfile2url(request, url, headers=None, params=None, data={}, method='GET'):
fpath = await downloadfile(url, headers=headers, params=params, data=data, method=method)
fs = FileStorage()
webpath = fs.webpath(fs)
env = request._run_ns
url = env.entire_url('/idfile?path=') + env.quote(webpath)
return url
async def base642file(b64str): async def base642file(b64str):
filename = getFilenameFromBase64(b64str) filename = getFilenameFromBase64(b64str)
if ',' in b64str: if ',' in b64str:

View File

@ -63,7 +63,7 @@ from .uriop import URIOp
from .error import Success, Error, NeedLogin, NoPermission from .error import Success, Error, NeedLogin, NoPermission
from .filetest import current_fileno from .filetest import current_fileno
from .filedownload import path_download, file_download from .filedownload import path_download, file_download
from .filestorage import FileStorage from .filestorage import FileStorage, downloadfile2url
from .serverenv import ServerEnv from .serverenv import ServerEnv
def server_error(errcode): def server_error(errcode):
@ -317,6 +317,7 @@ def initEnv():
g.server_error = server_error g.server_error = server_error
g.FileStorage = FileStorage g.FileStorage = FileStorage
g.str_tmpl_render = string_template_render g.str_tmpl_render = string_template_render
g.downloadfile2url = downloadfile2url
def set_builtins(): def set_builtins():
all_builtins = [ i for i in dir(builtins) if not i.startswith('_')] all_builtins = [ i for i in dir(builtins) if not i.startswith('_')]