Fix minio localhost public URL by proxying through backend
This commit is contained in:
@@ -1847,3 +1847,16 @@ def verify_payment(payload: VerifyPaymentPayload, session: Session = Depends(get
|
|||||||
return {"success": True, "tier": user.tier.value}
|
return {"success": True, "tier": user.tier.value}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/api/storage/{bucket}/{object_name:path}", tags=["Storage"])
|
||||||
|
def get_storage_file(bucket: str, object_name: str):
|
||||||
|
import storage
|
||||||
|
import io
|
||||||
|
from fastapi.responses import StreamingResponse
|
||||||
|
file_bytes = storage.get_file(object_name)
|
||||||
|
if not file_bytes:
|
||||||
|
from fastapi import HTTPException
|
||||||
|
raise HTTPException(status_code=404, detail="File not found")
|
||||||
|
content_type = "application/pdf" if object_name.endswith(".pdf") else "application/octet-stream"
|
||||||
|
return StreamingResponse(io.BytesIO(file_bytes), media_type=content_type)
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ def upload_file(file_content: bytes, object_name: str, content_type: str = "appl
|
|||||||
|
|
||||||
# Construct public URL (from browser's point of view, it connects to localhost:9000)
|
# Construct public URL (from browser's point of view, it connects to localhost:9000)
|
||||||
# We can resolve this dynamically by returning a path like /api/uploads/ or direct localhost:9000 link
|
# We can resolve this dynamically by returning a path like /api/uploads/ or direct localhost:9000 link
|
||||||
public_url = f"http://localhost:9000/{MINIO_BUCKET}/{object_name}"
|
public_url = f"/api/storage/{MINIO_BUCKET}/{object_name}"
|
||||||
logger.info(f"Successfully uploaded {object_name} to Minio. URL: {public_url}")
|
logger.info(f"Successfully uploaded {object_name} to Minio. URL: {public_url}")
|
||||||
return public_url
|
return public_url
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user