37 lines
1.3 KiB
Python
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}
|
|
|