From 815803f31046d43086b6517f3ad3e0b76de44901 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Tue, 23 Jun 2026 17:50:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20downloadfile2url=E6=94=AF=E6=8C=81reques?= =?UTF-8?q?t=3DNone=20+=20parse=5Frequest=E7=BC=93=E5=AD=98BASEURL?= =?UTF-8?q?=E5=88=B0env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - processorResource.parse_request: os.environ.setdefault('BASEURL', _preurl) 首次HTTP请求后缓存base URL,后续无request场景也能构建完整URL - filestorage.downloadfile2url: request=None时fallback到get_baseurl() 与b64media2url保持一致,支持产品模块等非HTTP上下文调用 --- ahserver/filestorage.py | 11 ++++++++--- ahserver/processorResource.py | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ahserver/filestorage.py b/ahserver/filestorage.py index 997614c..af6c85f 100644 --- a/ahserver/filestorage.py +++ b/ahserver/filestorage.py @@ -208,9 +208,14 @@ async def downloadfile2url(request, url, headers=None, params=None, data={}, met fpath = await downloadfile(url, headers=headers, params=params, data=data, method=method) fs = FileStorage() webpath = fs.webpath(fpath) - env = request._run_ns - url = env.entire_url('/idfile?path=') + env.quote(webpath) - return url + if request: + env = request._run_ns + url = env.entire_url('/idfile?path=') + env.quote(webpath) + return url + baseurl = get_baseurl() + if baseurl: + return f'{baseurl}/idfile?path={quote(webpath)}' + return f'/idfile?path={quote(webpath)}' def get_baseurl(): baseurl = os.environ.get('BASEURL') diff --git a/ahserver/processorResource.py b/ahserver/processorResource.py index 3f3515a..584daf6 100644 --- a/ahserver/processorResource.py +++ b/ahserver/processorResource.py @@ -198,6 +198,7 @@ class ProcessorResource(StaticResource,Url2File): portp = '' self._preurl = f'{self._scheme}://{self._host}{portp}{self._prepath}' request['base_url'] = self._preurl + os.environ.setdefault('BASEURL', self._preurl) # print(f'{request.path=}, {self._preurl=}')