【问题标题】:Write text to a file in Azure storage将文本写入 Azure 存储中的文件
【发布时间】:2013-06-12 05:37:17
【问题描述】:

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

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

【问题讨论】:

  • 我不确定这里有什么问题。当您在 Blob 存储中上传文件时,如果存在同名 Blob,则该 Blob 将被最新内容覆盖。
  • 好的..不知道..非常感谢..

标签: azure azure-storage azure-blob-storage


【解决方案1】:

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

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

  • 为此,您应该在您的辅助角色配置中分配一个本地磁盘。该磁盘将是一个逻辑磁盘,在您运行 vm 的机器内的本地物理磁盘上创建。换句话说,它将附加存储并且非常适合这种类型的使用。
  • 您的 vm 实例和存储之间的带宽为 100Mbps/核心。因此,在小型实例上抓取一个 10MB 的文件可能需要一秒钟。在 XL 上,大约需要十分之一秒。非常快,并且因 VM 系列(A、D、G)和尺寸而异。
  • 因为您的文件在 blob 存储中,如果您愿意这样做(或有此需要),您可以在上传更新版本之前拍摄快照。快照就像您存储的数据块的链接列表。直到有一天,您对现有数据进行更改(现在您将拥有代表新旧数据的块)之前,快照是免费的。逐个 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);
        }

【讨论】:

  • 对不起,如果我很荒谬,但是如果不进行此获取和上传,我就无法修改该文件......就像我们对存储在本地机器中的简单文件所做的那样......
  • 你不是荒谬的。您只是想将 blob 存储视为文件系统。如果这确实是您能够修改文件的唯一方法,请考虑安装磁盘(基本上是页面 blob 中的 vhd),然后将其视为文件系统。但是:这有缺点(例如无法与其他 VM 共享该磁盘,因为它可能只附加到单个 VM)。我正在修改我的答案,向您展示一个用于下载/修改/上传的简单代码 sn-p。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 2016-05-09
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 2012-06-05
  • 2019-10-02
相关资源
最近更新 更多