diff --git a/backend/app/admin/api/v1/sys/plugin.py b/backend/app/admin/api/v1/sys/plugin.py index 9214102e0..0d12e5c2d 100644 --- a/backend/app/admin/api/v1/sys/plugin.py +++ b/backend/app/admin/api/v1/sys/plugin.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- from typing import Annotated, Any -from fastapi import APIRouter, Depends, File, UploadFile +from fastapi import APIRouter, Depends, File, Path, UploadFile from fastapi.params import Query from starlette.responses import StreamingResponse @@ -84,16 +84,15 @@ async def update_plugin_status(plugin: Annotated[str, Query(description='插件 @router.get( - '/zip', + '/zip/{plugin}', summary='打包插件', dependencies=[ Depends(RequestPermission('sys:plugin:zip')), DependsRBAC, ], ) -async def build_plugin(plugin: Annotated[str, Query(description='插件名称')]) -> StreamingResponse: +async def build_plugin(plugin: Annotated[str, Path(description='插件名称')]) -> StreamingResponse: bio = await plugin_service.build(plugin=plugin) - bio.seek(0) return StreamingResponse( bio, media_type='application/x-zip-compressed', diff --git a/backend/app/admin/service/plugin_service.py b/backend/app/admin/service/plugin_service.py index d15a42e16..217d2e916 100644 --- a/backend/app/admin/service/plugin_service.py +++ b/backend/app/admin/service/plugin_service.py @@ -184,6 +184,7 @@ async def build(*, plugin: str) -> io.BytesIO: arcname = os.path.relpath(file_path, start=plugin_dir) zf.write(file_path, arcname) + bio.seek(0) return bio