0

我想将文件上传到 Azure Blob 存储,并将与文件相关的元数据保存到表存储。实现这一目标的最佳方法是什么?Blob 存储 URI 需要保存在表存储模型数据中,因此我首先需要将文件上传到 Blob 存储,然后才能保存元数据。

在一张表格上执行此操作是否是一种好习惯?有没有人有任何他们可以指出我的例子或教程

4

2 回答 2

0

首先,它在技术上不可能实现这一点,因为 URI 不同,处理 Azure blob 和表存储的 API 也不同。

不过,您确实有一些选择。首先,blob API 允许将元数据与 blob 相关联。Put Blob REST API 调用具有选项x -ms-meta name:value。这样,您可以执行单个 HTTP 请求来存储 blob 内容和元数据。如果您想将元数据严格存储到表存储中并一次性完成,那么您可以通过您的网络服务器路由您的 HTTP 请求,将内容和元数据发布到服务器端应用程序,然后由服务器端应用程序处理存储到blob 和 table 存储相关内容。

于 2013-07-15T20:50:47.120 回答
0

我通过将文件发布到 blob 存储并从同一页面上的表单集合中获取关联的元数据来实现这一点。在我的 POST 中,我使用 IO steam 来读取文件和相关的元数据,如下所示:

[HttpPost]
public ActionResult NewContent(HttpPostedFileBase postedFile,FormCollection form)
{
    if (postedFile != null)
    {
        HttpPostedFileBase postedFileCopy = postedFile;
        postedFileCopy.InputStream.Position = 0;
        Stream stream = postedFile.InputStream;

        string[] name = form.GetValues("name");
        string[] author = form.GetValues("author");
        string[] description = form.GetValues("description");
        DateTime uploaddate = form.GetValues("uploaddate");
        DateTime expirydate = form.GetValues("expirydate");
        string[] participationpoints = form.GetValues("participationpoints");
        string[] contenttypeid = form.GetValues("contenttypeid");

        try
        {
            avm.AddContent(postedFile, stream, name, author, description, uploaddate, expirydate, participationpoints, contenttypeid);
        }
        catch (Exception ex)
        {
            return RedirectToAction("Index", "Admin");
        }
    }
}

然后,在我的 AdminViewModel 中,我调用了一个方法,通过我的 dbcontext 保存了关联的元数据,因此将更改保存到 SQL 存储,同时文件也写入了 blob 存储。

于 2013-07-17T18:13:08.037 回答