使用UploadText在Azure Blob存储中创建文件

时间:2015-06-24 22:27:15

标签: azure azure-storage azure-storage-blobs blobstorage

提前感谢您的帮助。

我有一个我在C#中以编程方式创建的字符串,我希望将其保存到Azure BLOB存储中。我在代码中构建字符串,然后尝试将其存储为最后一步(文本文件)。一切顺利,直到我的字符串变成一定的大小。该过程在某一点截断字符串。文件被创建,但溢出量被简单地删除。似乎我需要将操作分解成块,但我不太确定如何到达那里。我想我需要通读字符串,然后插入块。

我正在使用Azure管理库。这是我的代码:

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(MyString);
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer cloudContainer = blobClient.GetContainerReference(DestinationContainerName);
        cloudContainer.CreateIfNotExists();
        CloudBlockBlob blockBlob = cloudContainer.GetBlockBlobReference(DestinationFileName);

        blockBlob.UploadText(sTheFile) 

变量“sTheFile”是看起来太大的字符串。

我确实需要使用UploadText,因为文件是在代码中虚拟构建的。有谁知道如何解析我的字符串(stheFile)并以块的形式创建BLOB?

真诚的感谢...

2 个答案:

答案 0 :(得分:2)

单个上传时阻止blob限制为64MB,存储客户端默认为32MB,通过设置SingleBlobUploadThresholdInBytes可以将其增加到64MB。

对于大小超过该大小的blob,您需要将字符串转换为MemoryStream并使用PutBlock以块的形式发送它。

此链接中的文章显示了如何执行此操作:

Windows Azure - BlockBlob PutBlock Method

答案 1 :(得分:0)

谢谢大家,我觉得自己像个白痴。肇兴一声巨响。因为我使用的是以编程方式生成的字符串,所以我转换为MemoryStream而不是FileStream。

为将来可能需要它的人提供最终解决方案:

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("MyConnectionString");
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer cloudContainer = blobClient.GetContainerReference(DestinationContainerName);
        cloudContainer.CreateIfNotExists();
        CloudBlockBlob blockBlob = cloudContainer.GetBlockBlobReference(DestinationFileName);
        using (MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(sFile.ToString())))
        {
            blockBlob.UploadFromStream(ms);
        }