22 lines
862 B
Python
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)}") |