лучший способ выгрузить массив uint8_t в хранилище BLOB-объектов Azure с помощью хранилища в переполнении стека

Я хотел бы загрузить массив uint8_t в хранилище Azure, используя SDK хранилища Azure. Я изо всех сил пытаюсь создать входной поток из массива, мне удалось получить что-то, что компилируется с использованием std :: vector, но это требует дополнительной копии массива.

Вы думаете о лучшем способе?

void upload(azure::storage::cloud_blob_container container, const wchar_t* blobName, const uint8_t * data, size_t dataLength) {

std::vector<uint8_t> bytes(dataLength, (const unsigned char)data);
concurrency::streams::bytestream byteStream = concurrency::streams::bytestream();
concurrency::streams::istream inputStream = byteStream.open_istream(bytes);

const utility::string_t myBlobName(blobName);
azure::storage::cloud_block_blob blockBlob = container.get_block_blob_reference(myBlobName);
blockBlob.upload_from_stream(inputStream);

inputStream.close();
}

метод upload_from_stream требует параллелизма :: streams :: istream, но я не знаю, как создать его из базового массива

заранее спасибо

1

Решение

Мне удалось найти лучшее решение, используя rawptr_buffer:

void BlobService::upload(cloud_blob_container container, const wchar_t* blobName, const uint8_t * data, size_t dataLength) {

rawptr_buffer<uint8_t> buffer(data, dataLength);
istream inputStream = buffer.create_istream();

cloud_block_blob blob = container.get_block_blob_reference(utility::string_t(blobName));
blob.upload_from_stream(inputStream);

inputStream.close().wait();
buffer.close().wait();

}
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector