, пожалуйста, как я могу загрузить двоичный объект с типом страницы лазурного эту страницу в файл VHD «большое содержание» выполните следующую функцию:загрузить страницу блоб в лазурных с помощью REST API питона
def upload(blob_service, container_name, blob_name, file_path):
blob_service.create_container(container_name, None, None, False)
blob_service.put_blob(container_name, blob_name, '', "PageBlob")
data_sent=0
sent = 0
block_ids = []
block_ids = []
index = 0
with open(file_path, 'rb') as f:
while True:
data = f.read(PAGE_SIZE)
if data:
length = len(data)
#block_id = base64.b64encode(str(index))
x_range = 'bytes={}-{}'.format(index, index + pageSize - 1)
blob_service.put_page(container_name, blob_name, data, x_ms_range = x_range,x_ms_page_write = 'clear')
block_ids.append(block_id)
index += 1
data_sent += PAGE_SIZE
sent = data_sent/(1024*1024)
sys.stdout.write("\rUploaded data = %d MB"%sent)
sys.stdout.flush()
else:
break
blob_service.put_block_list(container_name, blob_name, block_ids)
и Ошибка была:
Traceback (most recent call last):
File "ehcpazurenew.py", line 331, in <module>
upload(blob_service,container_name,blob_name,file_path)
File "ehcpazurenew.py", line 250, in upload
blob_service.put_blob(container_name, blob_name, '', "PageBlob")
File "/home/ahmed/Desktop/azure/storage/blobservice.py", line 486, in put_blob
response = self._perform_request(request)
File "/home/ahmed/Desktop/azure/storage/storageclient.py", line 145, in _perform_request
_storage_error_handler(e)
File "/home/ahmed/Desktop/azure/storage/__init__.py", line 757, in _storage_error_handler
return _general_error_handler(http_error)
File "/home/ahmed/Desktop/azure/__init__.py", line 649, in _general_error_handler
raise WindowsAzureError(_ERROR_UNKNOWN % http_error.message + '\n' + http_error.respbody)
azure.WindowsAzureError: Unknown error (An HTTP header that's mandatory for this request is not specified.)
<?xml version="1.0" encoding="utf-8"?><Error><Code>MissingRequiredHeader</Code> <Message>An HTTP header that's mandatory for this request is not specified.
RequestId:5a839a6d-2a0f-4559-bc6d-e3b2cccf84f5
Time:2013-11-17T13:12:03.8206435Z</Message><HeaderName>x-ms-blob-content-length</HeaderName></Error>
Но заголовок HTTP был прав:
[('x-ms-blob-type', 'PageBlob'), ('Content-Encoding', None), ('Content-Language', None), ('Content-MD5', None), ('Cache-Control', None), ('x-ms-blob-content-type', None), ('x-ms-blob-content-encoding', None), ('x-ms-blob-content-language', None), ('x-ms-blob-content-md5', None), ('x-ms-blob-cache-control', None), ('x-ms-meta-name-values', None), ('x-ms-lease-id', None), ('x-ms-blob-content-length', None), ('x-ms-blob-sequence-number', None)]
Я должен изменить свой сценарий, прежде чем комментировать, но спасибо за вашу помощь, также PAGE_SIZE, как указано в лазурной документации должно быть 512 байт !! я не знаю почему .. но что я прочитал. – aabdulwahed
Это результат после модификации: Xml version = "1.0" encoding = "utf-8"?> Значение для одного из HTTP-заголовков не в правильном формате. RequestID: 8f2ae87d-46e3-4d60-b884-fee92f9b0803 Время: 2013-11-17T17: 07: 37.9286660Z Content-Length 512 HeaderValue> –
aabdulwahed
InvalidHeaderValue
Что значение переменной PAGE_SIZE? Размер каждой страницы должен быть не более 512 байт. –