【问题标题】:Writing a text file to azure web site line by line将文本文件逐行写入 azure 网站
【发布时间】:2014-04-08 17:22:11
【问题描述】:

我需要更改一个 Web 应用程序才能使用 Windows Azure 网站。上传并解析两个文本文件,然后将第三个文件与解析的数据逐行写入。我发现无法将文件直接上传到 Azure 网站,需要使用 Blob 存储。这很简单。我找不到的是如何将文本文件逐行写入 Blob,或者可能会有更好的解决方案?我需要重新创建此代码以使用 Azure 网站:

using (var writer = new StreamWriter(filePath, false))
        {
           foreach (Product product in pm.GetAll())
            {
                    fp = pm.MakeFinal(product);

                    curLine.Append(fp.InventoryNumber + "\t");
                    curLine.Append(fp.SellerCost + "\t");
                    curLine.Append(fp.RetailPrice + "\t");
                    curLine.Append(fp.StartingBid + "\t");
                    curLine.Append(fp.BINPrice + "\t");
                    curLine.Append(fp.CAPrice + "\t");
                    curLine.Append(fp.Weight + "\t");
                    curLine.Append(fp.Length + "\t");
                    curLine.Append(fp.Width + "\t");
                    curLine.Append(fp.Height + "\t");
                    curLine.Append(fp.Brand + "\t");
                    curLine.Append(fp.Manufacturer + "\t");
                    curLine.Append(fp.MPN + "\t");
                    curLine.Append(fp.Quantity);

                    writer.WriteLine(curLine.ToString());
            }
        }

是否可以使用流写入器将文本文件逐行写入 Azure Blob。如果没有,有什么好的替代方法可以做到这一点?

编辑 ------------------

这没有回答我提出的问题,但我不再需要使用 Azure blob 存储。我在 web.config 中添加了以下内容,两个文件都可以正常上传,第三个文件也可以正常创建:

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="2000000000" />
  </requestFiltering>
</security>

【问题讨论】:

  • 您为什么这么说:我发现我无法将文件直接上传到 Azure 网站
  • @AmitApple 我有两个文件需要上传,一个是 1.75mb,另一个是大约 45mb。 1.75 mb 文件上传正常,但由于某种原因,当我通过 ftp 验证时,45mb 文件没有显示在上传目录中。
  • 这表示 azure blob 不能超过 4mb 或者它们需要被分割成块。 dvanderboom.wordpress.com/2009/02/21/…
  • 更正:Blob 可能高达 200GB。所有 blob 都由块(或页面,对于页面 blob)组成。 blob 中的每个 block 限制为 4MB。有关详细信息,请参阅this article

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


【解决方案1】:

您具有本地磁盘访问权限,可以在其中完全按照您现在的操作方式构建新文件。构建完文件后,您只需将文件复制到一个 blob( 通过 blob REST API 支持,并由 .NET SDK 和其他语言 SDK 包装)。看看CloudBlockBlob类和UploadFromFileUploadFromFileAsync方法(也有从流上传的方法)。

还有一个支持读写的CloudBlobStream类。

【讨论】:

  • 如果我能做到这一点,是否可以跳过将其复制到 blob 并让文件放在 azure 网站上?
  • 我认为无法保证在实例维护/重启后文件将被保留。最好的办法是使用本地磁盘来构建您所描述的文件,然后将其移动到 blob 存储以实现持久性。
  • Azure 网站在实例之间共享磁盘。但是,正如@BrendanGreen 所说,它不会永远持续下去。如果您关闭该网站,所有 数据都会消失。如果您将数据存储在 blob 中,那么即使您完全拆除了网站,数据也仍然存在。此外,网站有 1gb 到 50gb 的存储空间(取决于免费/共享/基本/标准层)。 Blob 存储将为您提供每个存储帐户 1TB 的空间,并且您可以拥有多个存储帐户。而且...使用 blob,您可以拥有地理复制数据。
猜你喜欢
  • 2015-03-11
  • 1970-01-01
  • 2021-12-30
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多