storage.py 743 B

1234567891011121314151617181920
  1. import os
  2. import shutil
  3. import uuid
  4. from fastapi import UploadFile, File, HTTPException
  5. from .core import STORE_DIR
  6. FILES: dict[str, str] = {} # file_id -> abs path
  7. ALLOWED_EXTS = {".mat", ".h5", ".hdf5", ".json"}
  8. def save_upload(file: UploadFile = File(...)) -> dict:
  9. ext = (os.path.splitext(file.filename or "")[1] or "").lower()
  10. if ext not in ALLOWED_EXTS:
  11. raise HTTPException(400, f"Поддерживаются: {', '.join(sorted(ALLOWED_EXTS))}")
  12. file_id = str(uuid.uuid4())
  13. save_path = os.path.join(STORE_DIR, f"{file_id}_{file.filename}")
  14. with open(save_path, "wb") as f:
  15. shutil.copyfileobj(file.file, f)
  16. FILES[file_id] = save_path
  17. return {"file_id": file_id, "filename": file.filename}