37 lines
1.3 KiB
Python

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}