Files
2026-07-08 20:02:29 +08:00

44 lines
1.1 KiB
Python

import os
import aiofiles
from pathlib import Path
from fastapi import UploadFile
from app.core.config import get_settings
settings = get_settings()
TEMPLATES_DIR = "templates"
REF_FILES_DIR = "ref_files"
RESULTS_DIR = "results"
def _ensure_dir(path: str) -> str:
os.makedirs(path, exist_ok=True)
return path
def get_storage_dir(subdir: str) -> str:
return _ensure_dir(os.path.join(settings.STORAGE_ROOT, subdir))
async def save_upload(upload_file: UploadFile, subdir: str) -> str:
dir_path = get_storage_dir(subdir)
file_path = os.path.join(dir_path, upload_file.filename or "unnamed")
async with aiofiles.open(file_path, "wb") as f:
content = await upload_file.read()
await f.write(content)
return file_path
async def get_file_content(file_path: str) -> bytes:
async with aiofiles.open(file_path, "rb") as f:
return await f.read()
def delete_file(file_path: str) -> None:
if os.path.exists(file_path):
os.remove(file_path)
def get_absolute_path(rel_path: str) -> str:
return os.path.abspath(rel_path)