azure - 将文本写入 Azure 存储中的文件

标签 azure azure-storage azure-blob-storage

我在我的Azure存储帐户中上传了一个文本文件。现在,在我的辅助角色中,我需要做的是每次运行它时,它都会从数据库中获取一些内容,并且该内容必须写入上传的内容中文本文件,具体来说,每次文本文件的内容都应该被一些新内容覆盖。

Here ,他们提供了一种将文本文件上传到您的存储并删除文件的方法。但我不想这样做,每次只需要修改已经存在的文本文件。

最佳答案

我假设您指的是在 Windows Azure blob 中存储文件。如果是这种情况:blob 不是文件系统;而是文件系统。它只是一个存储数据的地方(文件的概念有点人为 - 它只是......存储在一堆 block 中的 blob)。

要修改文件,您需要下载它并将其保存到本地磁盘,修改它(再次在本地磁盘上),然后上传。对此的一些想法:

  • 为此,您应该在辅助角色的配置中分配本地磁盘。该磁盘将是一个逻辑磁盘,在运行虚拟机的计算机内的本地物理磁盘上创建。换句话说,它将附加存储空间,非常适合这种类型的使用。
  • 虚拟机实例和存储之间的带宽为每个核心 100Mbps。因此,在小型实例上获取 10MB 的文件可能需要一秒钟的时间。在 XL 上,可能大约十分之一秒。 非常快,并且随 VM 系列(A、D、G)和尺寸而变化。
  • 由于您的文件位于 Blob 存储中,因此如果您愿意(或有必要)这样做,您可以在上传更新版本之前拍摄快照。快照就像存储数据 block 的链接列表。而且快照是免费的,直到有一天您对现有数据进行更改(现在您将拥有代表旧数据和新数据的 block )。这是逐个 blob 保留 blob 版本的绝佳方法(删除快照也很简单)。

为了确保此下载/修改/上传模式清晰可见,这里有一个非常简单的示例(我只是在 Visual Studio 中快速输入了此内容,但尚未对其进行测试。只是试图说明这一点):

        // initial setup
        var acct = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
        var client = acct.CreateCloudBlobClient();

        // what you'd call each time you need to update a file stored in a blob
        var blob = client.GetContainerReference("mycontainer").GetBlockBlobReference("myfile.txt");
        using (var fileStream = System.IO.File.OpenWrite(@"path\myfile.txt"))
        {
            blob.DownloadToStream(fileStream);
        }

        // ... modify file...

        // upload modified file
        using (var fileStream = System.IO.File.OpenWrite(@"path\myfile.txt"))
        {
            blob.UploadFromStream(fileStream);
        }

关于azure - 将文本写入 Azure 存储中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058324/

相关文章:

java - 如何在 Azure IoT 中配置设备时发送自定义负载?

java - 我可以将流上传到 Azure Blob 存储而不预先指定其长度吗?

azure - Azure 存储中的图像

c# - Office 365 API - 自动登录

azure - 在 Azure Web App 中进行跟踪 - 日志文件/应用程序中没有记录任何内容

.net - Azure 逻辑应用程序 : How to Send an Email with one or more attachments after getting the content from Blob storage?

azure - 在SQL azure中引用blob存储数据

c# - 使用内存流从 URL 读取 Excel

azure - 将容器从 ACR 部署到 AKS

azure - 升级到 Azure 1.7 现在连接到不同的开发存储