Spaces:
Runtime error
Runtime error
| from azure.storage.blob import BlobServiceClient, BlobClient, ContentSettings, generate_blob_sas, BlobSasPermissions | |
| from datetime import datetime, timedelta | |
| import os | |
| import dotenv | |
| dotenv.load_dotenv() | |
| storage_account_name = os.environ['AZURE_STORAGE_ACCOUNT_NAME'] | |
| storage_account_key = os.environ['AZURE_STORAGE_KEY'] | |
| connection_string = os.environ['AZURE_STORAGE_CONNECTION_STRING'] | |
| container_name = os.environ['AZURE_STORAGE_CONTAINER_NAME'] | |
| def upload_image_to_blob(image_data, image_name): | |
| # Create a BlobServiceClient | |
| blob_service_client = BlobServiceClient(account_url=f"https://{storage_account_name}.blob.core.windows.net", | |
| credential=storage_account_key) | |
| # Get the container client | |
| container_client = blob_service_client.get_container_client(container_name) | |
| # get the extension | |
| # extension = os.path.splitext(image_name)[1] | |
| # Get the blob client for the image | |
| blob_name = image_name | |
| blob_client = container_client.get_blob_client(blob_name) | |
| # Determine the content type from the image name | |
| content_type = "image/jpeg" # Default to JPEG | |
| if image_name.lower().endswith(".png"): | |
| content_type = "image/png" | |
| elif image_name.lower().endswith(".gif"): | |
| content_type = "image/gif" | |
| # Create the content settings with the determined content type | |
| content_settings = ContentSettings(content_type=content_type) | |
| # Set the content settings for the blob | |
| # blob_client.set_http_headers(content_settings) | |
| # Upload the image | |
| blob_client.upload_blob(image_data, content_settings=content_settings) | |
| # Generate a SAS token for the blob | |
| sas_token = generate_blob_sas( | |
| account_name=storage_account_name, | |
| container_name=container_name, | |
| blob_name=blob_name, | |
| account_key=storage_account_key, | |
| permission=BlobSasPermissions(read=True), | |
| expiry=datetime.utcnow() + timedelta(hours=10) # The SAS token will be valid for 1 hour | |
| ) | |
| # Create a SAS URL for the blob | |
| sas_url = f"https://{storage_account_name}.blob.core.windows.net/{container_name}/{blob_name}?{sas_token}" | |
| return sas_url | |