使用 UploadText 在 Azure Blob 存储中创建文件
Create File in Azure Blob Storage Using UploadText
在此先感谢您的帮助。
我有一个在 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?
真诚的感谢...
单个上传的块 blob 限制为 64MB,存储客户端默认为 32MB,您可以通过设置 SingleBlobUploadThresholdInBytes 将其增加到 64MB。
对于超过该大小的 blob,您需要将字符串转换为 MemoryStream 并使用 PutBlock 以块的形式发送它。
link 上的文章展示了如何做到这一点:
谢谢大家,我觉得自己像个白痴。肇兴大放异彩。因为我使用的是以编程方式生成的字符串,所以我转换为 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);
}
在此先感谢您的帮助。
我有一个在 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?
真诚的感谢...
单个上传的块 blob 限制为 64MB,存储客户端默认为 32MB,您可以通过设置 SingleBlobUploadThresholdInBytes 将其增加到 64MB。
对于超过该大小的 blob,您需要将字符串转换为 MemoryStream 并使用 PutBlock 以块的形式发送它。
link 上的文章展示了如何做到这一点:
谢谢大家,我觉得自己像个白痴。肇兴大放异彩。因为我使用的是以编程方式生成的字符串,所以我转换为 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);
}