After_Chido_Api/services/s3_service.py

22 lines
862 B
Python

from fastapi import UploadFile, HTTPException
import boto3
from botocore.exceptions import NoCredentialsError
from config.settings import settings
s3_client = boto3.client(
's3',
aws_access_key_id=settings.aws_access_key_id,
aws_secret_access_key=settings.aws_secret_access_key
)
class UploadService:
@staticmethod
async def upload_file(file: UploadFile):
try:
s3_client.upload_fileobj(file.file, settings.aws_bucket_name, file.filename)
file_url = f"https://{settings.aws_bucket_name}.s3.amazonaws.com/{file.filename}"
return {"file_url": file_url}
except NoCredentialsError:
raise HTTPException(status_code=500, detail="AWS credentials not available")
except Exception as e:
raise HTTPException(status_code=500, detail=f"Could not upload file: {str(e)}")