fix: downloadfile2url支持request=None + parse_request缓存BASEURL到env

- processorResource.parse_request: os.environ.setdefault('BASEURL', _preurl)
  首次HTTP请求后缓存base URL,后续无request场景也能构建完整URL
- filestorage.downloadfile2url: request=None时fallback到get_baseurl()
  与b64media2url保持一致,支持产品模块等非HTTP上下文调用
This commit is contained in:
Hermes Agent 2026-06-23 17:50:30 +08:00
parent e5cb10063d
commit 815803f310
2 changed files with 9 additions and 3 deletions

View File

@ -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')

View File

@ -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=}')