28 lines
1001 B
Python
28 lines
1001 B
Python
# app/api/v1/upload.py
|
|
from fastapi import APIRouter, UploadFile, File, HTTPException
|
|
from services.upload_service import UploadService
|
|
import uuid
|
|
|
|
router = APIRouter()
|
|
|
|
# Instancier UploadService avec le nom de ton bucket S3
|
|
upload_service = UploadService(bucket_name="ton-nom-de-bucket")
|
|
|
|
@router.post("/")
|
|
async def upload_file(file: UploadFile = File(...)):
|
|
# Générer un nom de fichier unique
|
|
file_extension = file.filename.split(".")[-1] # Récupérer l'extension du fichier
|
|
unique_filename = f"{uuid.uuid4()}.{file_extension}" # Générer un nom unique
|
|
|
|
try:
|
|
# Lire le contenu du fichier de manière asynchron
|
|
file_content = await file.read()
|
|
|
|
# Uploader le fichier sur S3
|
|
file_url = upload_service.upload_file(file_content, unique_filename)
|
|
|
|
# Retourner l'URL du fichier uploadé
|
|
return {"file_url": file_url}
|
|
except Exception as e:
|
|
# Gérer les erreurs
|
|
raise HTTPException(status_code=500, detail=str(e)) |