如何将字节数组(即byte [])保存到Azure Blob存储?

Sha*_*ane 12 c# azure azure-storage-blobs

我知道如何保存Streams,但我想获取该流并创建缩略图和其他大小的图像,但我不知道如何将byte []保存到Azure Blob存储.

这就是我现在要做的就是保存Stream:

 // Retrieve reference to a blob named "myblob".
        CloudBlockBlob _blockBlob = container.GetBlockBlobReference("SampleImage.jpg");

        // upload from Stream object during file upload
        blockBlob.UploadFromStream(stream);

        // But what about pushing a byte[] array?  I want to thumbnail and do some image manipulation
Run Code Online (Sandbox Code Playgroud)

Rob*_*rch 23

这曾经是Storage Client库(肯定是1.7版本) - 但他们在2.0版本中删除了它

"所有上传和下载方法现在都是基于流的,FromFile,ByteArray,Text重载已被删除."

http://blogs.msdn.com/b/windowsazurestorage/archive/2012/10/29/windows-azure-storage-client-library-2-0-breaking-changes-amp-migration-guide.aspx

围绕字节数组创建只读内存流非常轻量级:

byte[] data = new byte[] { 1, 2, 3 };
using(var stream = new MemoryStream(data, writable: false)) {
    blockBlob.UploadFromStream(stream);
}
Run Code Online (Sandbox Code Playgroud)

更新:UploadFromByteArray又回来了

MSDN文档 - 从我在源代码中可以看出,它回归到3.0版本,并且仍然适用于4.0版本.

  • 啊,所以一个明确的不,它不再可用。明白了。谢谢。 (2认同)

ice*_*urg 8

更新:

UploadFromByteArray又回来了.

public void UploadFromByteArray (
    byte[] buffer,
    int index,
    int count,
    [OptionalAttribute] AccessCondition accessCondition,
    [OptionalAttribute] BlobRequestOptions options,
    [OptionalAttribute] OperationContext operationContext
)
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudblockblob.uploadfrombytearray.aspx


spe*_*der 5

我对Azure也一无所知,但是使用Streams,你可以按如下方式处理它:

//byte[] data;

using(var ms = new MemoryStream(data, false))
{
    blockBlob.UploadFromStream(ms);
}
Run Code Online (Sandbox Code Playgroud)


rcr*_*ruz 5

使用新的 SDK azure.storage.blob

var blobContainerClient = new BlobContainerClient(storageConnectionString, containerName);
BlobClient blob = blobContainerClient.GetBlobClient(blobName);

using(var ms = new MemoryStream(data, false))
{
     await blob.UploadAsync(ms);
}
Run Code Online (Sandbox Code Playgroud)