MCPcopy Index your code
hub / github.com/vastsa/FileCodeBox / presign_upload_proxy

Function presign_upload_proxy

apps/base/views.py:722–748  ·  view source on GitHub ↗

代理模式上传,服务器转存到存储后端

(
    upload_id: str, file: UploadFile = File(...), ip: str = Depends(ip_limit["upload"])
)

Source from the content-addressed store, hash-verified

720 "/upload/proxy/{upload_id}", dependencies=[Depends(share_required_login)]
721)
722async def presign_upload_proxy(
723 upload_id: str, file: UploadFile = File(...), ip: str = Depends(ip_limit["upload"])
724):
725 """代理模式上传,服务器转存到存储后端"""
726 session = await _get_valid_session(upload_id, expected_mode="proxy")
727
728 file_size = await validate_file_size(file, settings.uploadSize)
729 if abs(file_size - session.file_size) > 1024:
730 raise HTTPException(400, "文件大小与声明不符")
731
732 storage: FileStorageInterface = storages[settings.file_storage]()
733 try:
734 await storage.save_file(file, session.save_path)
735 except Exception as e:
736 raise HTTPException(500, f"文件保存失败: {str(e)}")
737
738 code = await FileUploadService.create_file_record(
739 session.file_name,
740 file_size,
741 os.path.dirname(session.save_path),
742 session.expire_value,
743 session.expire_style,
744 )
745
746 await session.delete()
747 ip_limit["upload"].add_ip(ip)
748 return APIResponse(detail={"code": code, "name": session.file_name})
749
750
751@presign_api.post(

Callers

nothing calls this directly

Calls 7

APIResponseClass · 0.90
_get_valid_sessionFunction · 0.85
validate_file_sizeFunction · 0.85
create_file_recordMethod · 0.80
deleteMethod · 0.80
add_ipMethod · 0.80
save_fileMethod · 0.45

Tested by

no test coverage detected