import os from fastapi import APIRouter, UploadFile, File, Form, HTTPException from pathlib import Path from database.database import new_session import shutil import pandas as pd from sqlalchemy import select from repositories.csv_file_repository import CSVFileRepository router = APIRouter() UPLOAD_FOLDER_CSV = Path("uploads/csv") UPLOAD_FOLDER_CSV.mkdir(parents=True, exist_ok=True) UPLOAD_FOLDER_MODELS = "uploads/models" os.makedirs(UPLOAD_FOLDER_MODELS, exist_ok=True) # Обновлённый метод для загрузки CSV файла @router.post("/upload/csv/") async def upload_csv(user_id: int = Form(...), file: UploadFile = File(...)): # Формируем путь для сохранения user_folder = UPLOAD_FOLDER_CSV / str(user_id) user_folder.mkdir(parents=True, exist_ok=True) file_path = user_folder / file.filename # Сохраняем файл with open(file_path, "wb") as buffer: shutil.copyfileobj(file.file, buffer) # Сохраняем данные в БД, заменяя обратные слэши на прямые normalized_path = str(file_path).replace("\\", "/") await CSVFileRepository.upload_file(user_id=user_id, file_path=normalized_path) return {"message": "CSV файл загружен", "file_path": normalized_path}