Как загрузить данные из хранилища Azure, используя get_blob_to_stream - PullRequest
3 голосов
/ 03 мая 2019

У меня есть несколько файлов в моей учетной записи Azure-Storage.мне нужно скачать их, используя get_blob_to_stream.it возвращает объект azure.storage.blob.models.Blob.поэтому я не могу скачать его, используя приведенный ниже код.

def download(request):
    file_name=request.POST['tmtype']
    fp = open(file_name, 'wb')
    generator = block_blob_service.list_blobs(container_name)
    for blob in generator:
        print(blob.name)
        if blob.name==file_name:             
            blob=block_blob_service.get_blob_to_stream(container_name, blob.name, fp,max_connections= 2)    
        response = HttpResponse(blob, content_type="image/png")
        response['Content-Disposition'] = "attachment; filename="+file_name
        return response

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

На самом деле вы можете использовать свойство get_blob_to_path , ниже приведен пример на python:

from azure.storage.blob import BlockBlobService

bb = BlockBlobService(account_name='', account_key='')
container_name = ""
blob_name_to_download = "test.txt"
file_path ="/home/Adam/Downloaded_test.txt"

bb.get_blob_to_path(container_name, blob_name_to_download, file_path, open_mode='wb', snapshot=None, start_range=None, end_range=None, validate_content=False, progress_callback=None, max_connections=2, lease_id=None, if_modified_since=None, if_unmodified_since=None, if_match=None, if_none_match=None, timeout=None)

В этом примере с загрузкой файла большого двоичного объекта с именем: "test.txt", в контейнере, в File_path "/home/Adam/Downloaded_test.txt", вы также можете сохранить то же имя, если хотите. , Вы можете найти больше образцов, включая этот в https://github.com/adamsmith0016/Azure-storage

0 голосов
/ 06 мая 2019

Если вы хотите использовать get_blob_to_stream. Вы можете скачать с кодом ниже: with io.open(file_path, 'wb') as file: blob = block_blob_service.get_blob_to_stream(container_name=container_name, blob_name=blob_name, stream=file, max_connections=2)

Просто обратите внимание, что содержимое файла будет передаваться в файл, а не возвращаемый объект BLOB-объекта. Blob.content должно быть None. Это по замыслу. Смотри https://github.com/Azure/azure-storage-python/issues/538.

...