26 lines
966 B
Python
26 lines
966 B
Python
import os
|
|
import shutil
|
|
from fastapi import APIRouter, UploadFile, File, HTTPException
|
|
from app.core.config import settings
|
|
|
|
router = APIRouter(tags=["Storage"])
|
|
|
|
@router.post("/storage/upload")
|
|
async def upload_file(file: UploadFile = File(...)):
|
|
"""Upload a file to landing storage staging area."""
|
|
try:
|
|
os.makedirs(settings.UPLOADS_DIR, exist_ok=True)
|
|
dest_path = os.path.join(settings.UPLOADS_DIR, file.filename)
|
|
with open(dest_path, "wb") as buffer:
|
|
shutil.copyfileobj(file.file, buffer)
|
|
s3_uri = f"s3://dlh-landing/uploads/{file.filename}"
|
|
return {
|
|
"status": "success",
|
|
"filename": file.filename,
|
|
"local_path": dest_path,
|
|
"s3_uri": s3_uri,
|
|
"message": f"File '{file.filename}' successfully uploaded to landing storage."
|
|
}
|
|
except Exception as e:
|
|
raise HTTPException(status_code=500, detail=f"File upload error: {str(e)}")
|