fix: support legacy presign proxy upload URLs
This commit is contained in:
+20
-7
@@ -549,6 +549,14 @@ presign_api = APIRouter(prefix="/presign", tags=["预签名上传"])
|
|||||||
PRESIGN_SESSION_EXPIRES = 900 # 15分钟
|
PRESIGN_SESSION_EXPIRES = 900 # 15分钟
|
||||||
|
|
||||||
|
|
||||||
|
def build_proxy_upload_urls(upload_id: str) -> dict:
|
||||||
|
proxy_upload_url = f"/presign/upload/proxy/{upload_id}"
|
||||||
|
return {
|
||||||
|
"proxy_upload_url": proxy_upload_url,
|
||||||
|
"legacy_proxy_upload_url": f"/api{proxy_upload_url}",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def _get_valid_session(
|
async def _get_valid_session(
|
||||||
upload_id: str, expected_mode: Optional[str] = None
|
upload_id: str, expected_mode: Optional[str] = None
|
||||||
) -> PresignUploadSession:
|
) -> PresignUploadSession:
|
||||||
@@ -588,7 +596,8 @@ async def presign_upload_init(
|
|||||||
)
|
)
|
||||||
|
|
||||||
mode = "direct" if presigned_url else "proxy"
|
mode = "direct" if presigned_url else "proxy"
|
||||||
upload_url = presigned_url or f"/api/presign/upload/proxy/{upload_id}"
|
proxy_urls = build_proxy_upload_urls(upload_id)
|
||||||
|
upload_url = presigned_url or proxy_urls["proxy_upload_url"]
|
||||||
|
|
||||||
await PresignUploadSession.create(
|
await PresignUploadSession.create(
|
||||||
upload_id=upload_id,
|
upload_id=upload_id,
|
||||||
@@ -602,13 +611,17 @@ async def presign_upload_init(
|
|||||||
)
|
)
|
||||||
|
|
||||||
ip_limit["upload"].add_ip(ip)
|
ip_limit["upload"].add_ip(ip)
|
||||||
|
detail = {
|
||||||
|
"upload_id": upload_id,
|
||||||
|
"upload_url": upload_url,
|
||||||
|
"mode": mode,
|
||||||
|
"expires_in": PRESIGN_SESSION_EXPIRES,
|
||||||
|
}
|
||||||
|
if mode == "proxy":
|
||||||
|
detail.update(proxy_urls)
|
||||||
|
|
||||||
return APIResponse(
|
return APIResponse(
|
||||||
detail={
|
detail=detail
|
||||||
"upload_id": upload_id,
|
|
||||||
"upload_url": upload_url,
|
|
||||||
"mode": mode,
|
|
||||||
"expires_in": PRESIGN_SESSION_EXPIRES,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ register_tortoise(
|
|||||||
app.include_router(share_api)
|
app.include_router(share_api)
|
||||||
app.include_router(chunk_api)
|
app.include_router(chunk_api)
|
||||||
app.include_router(presign_api)
|
app.include_router(presign_api)
|
||||||
|
app.include_router(presign_api, prefix="/api")
|
||||||
app.include_router(admin_api)
|
app.include_router(admin_api)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user