I missed this in the previous blog entry. The SDK makes it really trivial to extract blob data. For text content you can directly get the text, and for non-text content you can either download to a file or to a stream. The code snippet below shows how it’s done.
void DownloadBlobData()
{
auto storage_account = cloud_storage_account::parse(
U("UseDevelopmentStorage=true"));
auto blob_client = storage_account.create_cloud_blob_client();
auto container = blob_client.get_container_reference(
U("textdata"));
bool created = container.create_if_not_exists();
// Read the text content directly
auto text_blob1 = container.get_block_blob_reference(
U("texts/text1"));
auto text = text_blob1.download_text();
ucout << text << endl;
// Download the blob data to a file
auto text_blob2 = container.get_block_blob_reference(
U("texts/text2"));
text_blob2.download_to_file(
U("d:\\tmp\\blobdata.txt"));
// Download the blob data to an ostream
stringstreambuf buffer;
concurrency::streams::ostream output(buffer);
text_blob2.download_to_stream(output);
cout << buffer.collection() << endl;
}