iLOVE2D's picture
Upload 2846 files
5374a2d verified
import base64
from typing import Optional
from ...storage_handler import FileStorageHandler, LocalStorageHandler
def file_to_base64(path: str, storage_handler: Optional[FileStorageHandler] = None) -> str:
"""Convert file to base64 using storage handler"""
if storage_handler is None:
storage_handler = LocalStorageHandler()
result = storage_handler.read(path)
if result["success"]:
if isinstance(result["content"], bytes):
return base64.b64encode(result["content"]).decode('utf-8')
else:
# If content is not bytes, convert to bytes first
return base64.b64encode(str(result["content"]).encode('utf-8')).decode('utf-8')
else:
raise FileNotFoundError(f"Could not read file {path}: {result.get('error', 'Unknown error')}")
def file_to_base64_legacy(path: str) -> str:
"""Legacy function for backward compatibility - uses direct file I/O"""
with open(path, 'rb') as f:
return base64.b64encode(f.read()).decode('utf-8')