【问题标题】:Saving file to blob storage and associated metadata to table storage using one HTTP Post使用一个 HTTP Post 将文件保存到 blob 存储和关联的元数据到表存储
【发布时间】:2013-07-09 11:49:27
【问题描述】:

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

在一个表单上执行此操作是否是一种好习惯?有没有人有任何示例或教程可以指向我

【问题讨论】:

    标签: http-post azure-sql-database azure-blob-storage html.beginform


    【解决方案1】:

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

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

    【讨论】:

    • 听起来很有趣,明天会调查并回复你,干杯朋友
    【解决方案2】:

    我通过将文件发布到 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 存储。

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 2020-08-25
      • 2021-09-20
      • 2020-09-24
      • 2018-01-11
      • 1970-01-01
      • 2016-08-30
      • 2019-05-01
      • 2021-03-19
      相关资源
      最近更新 更多