Я полностью согласен с ответом @ GauravMantri: вам нужно создать URL с токеном sas для ваших изображений в виде больших двоичных объектов в личном контейнере, используя функцию generate_container_sas
или generate_blob_sas
из Azure Blob Storage SDK v12 для Python.
Кроме того, я думаю, что вам может понадобиться некоторый пример кода, который может работать для вас немедленно, поэтому я работал над ним.
Вот мой пример кода.
from datetime import datetime, timedelta
from azure.storage.blob import generate_container_sas, ContainerSasPermissions
account_name = "<your account name>"
account_key = "<your account key>"
container_name = "<your container name, such as `test`>"
# using generate_container_sas
def get_img_url_with_container_sas_token(blob_name):
container_sas_token = generate_container_sas(
account_name=account_name,
container_name=container_name,
account_key=account_key,
permission=ContainerSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1)
)
blob_url_with_container_sas_token = f"https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}?{container_sas_token}"
return blob_url_with_container_sas_token
from azure.storage.blob import generate_blob_sas, BlobSasPermissions
# using generate_blob_sas
def get_img_url_with_blob_sas_token(blob_name):
blob_sas_token = generate_blob_sas(
account_name=account_name,
container_name=container_name,
blob_name=blob_name,
account_key=account_key,
permission=ContainerSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1)
)
blob_url_with_blob_sas_token = f"https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}?{blob_sas_token}"
return blob_url_with_blob_sas_token
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/showimg")
@app.route("/showimg/<blob_name>")
def hello_world(blob_name=None):
img_url_with_sas_token = get_img_url_with_blob_sas_token(blob_name)
# Or
# img_url_with_sas_token = get_img_url_with_container_sas_token(blob_name)
return render_template('showimage.html', img_url_with_sas_token=img_url_with_sas_token)
app.run()
И мой templates/showimage.html
очень прост, как показано ниже.
<html>
<head>
</head>
<body>
<img src="{{img_url_with_sas_token}}" />
</body>
</html>
В моем контейнере test
есть изображение с именем test_cat2.jpg
, которое я использовал для тестирования, поэтому результат показан на рисунке ниже.