Подписанный URL-адрес облачного хранилища Google недоступен в HTML, но работает в браузере
Я использую Python с библиотекой Google Cloud Storage для создания подписанных URL-адресов для объектов в ведре. Эти URL предназначены для вставки в HTML для отображения изображений на веб-странице. Однако, хотя подписанные URL работают нормально при прямой вставке в браузер, они не отображают изображения при использовании в HTML-коде.
from google.cloud import storage
from datetime import timedelta
def list_signed_urls(bucket_name, prefix, expiration_time=3600):
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blobs = bucket.list_blobs(prefix=prefix)
signed_urls = []
for blob in blobs:
signed_url = blob.generate_signed_url(
expiration=timedelta(seconds=expiration_time),
method='GET'
)
signed_urls.append(signed_url)
return signed_urls
if request.session.get('file_processed'):
bucket_name = 'datamedical'
positive_images = list_signed_urls(bucket_name, 'positive/')
negative_images = list_signed_urls(bucket_name, 'negative/')
context = {
'positive_images': positive_images,
'negative_images': negative_images,
}
return render(request, 'image/index.html', context)
**<img src="signed_url_here" alt="Image">**
Я подтвердил правильность подписанных URL-адресов, проверив их по отдельности в браузере. Однако, когда я использую их в HTML-коде, например, так:
`
Я решил эту проблему. По сути, мне просто нужно изменить мой html-урл на такой:
{% for url in positive_images %}
<div class="image-container">
<img src="{{ url|safe }}" alt="Positive Image" />
<p>{{ positive_file }}</p>
</div>
{% endfor %}