【问题标题】:Azure Blob Architecture/Usage Scenario: Dynamic Blog Containers and Uploading/Viewing ImagesAzure Blob 架构/使用场景:动态博客容器和上传/查看图像
【发布时间】:2015-09-10 03:48:27
【问题描述】:

我正在开发一个 Web 项目,用户需要一个专门的“工作区”来上传和查看特定于他们的图像。我目前的想法是,我将在以下位置利用 Azure Blob 存储:

1) 点击时(可能在填写表格后),用户将获得自己的 Blob 容器,他们可以在其中上传和查看已上传的文件

2) 用户将无法查看其他人的 Blob 容器 (SAS)

3) 用户可以稍后登录并通过引用与他们的用户名绑定的 Blob 容器“从上次离开的地方继续”(我设想使用 Azure 移动服务来存储对用户名和他们拥有的 blob 的引用)

我有一个通过 JavaScript 实现这一点的硬性要求(我正在使用 AngularJS 应用程序),并且会包含 node.js 作为一个选项。

我的问题如下:

1) Azure Blob 存储是此类场景的正确解决方案吗?

2) 我如何通过 JavaScript 以编程方式创建容器?

3) 使用 JavaScript(jQuery 等)上传文件的首选方法是什么?我已经启用了 CORS 并将示例 blob 设置为 Public 以进行测试,但仍然收到带有 PUT 请求的 Cross Origin 错误。我需要带有公共 blob 的 SAS 吗?

4) 除了 PUT 之外,我还需要覆盖现有图像吗?

5) 最重要的是:考虑到用户希望在短时间内查看他们上传的图像,社区会推荐他们的替代架构或解决方案吗

【问题讨论】:

    标签: javascript azure


    【解决方案1】:

    1) Azure Blob 存储是否适合以下场景? 这个?

    对于在 Azure 中存储图像,Blob Storage 是最佳位置。

    2) 我如何通过 JavaScript 以编程方式创建容器?

    从技术上讲,您可以使用 REST API 通过 JavaScript 创建容器,但不建议这样做,因为现在只有帐户所有者才能创建容器(或者换句话说,需要帐户密钥才能创建容器)。你可以做的是当用户注册时在你的服务器端脚本中创建一个容器。

    3) 使用 JavaScript(jQuery 等)的首选方法是什么? 上传文件?我已经启用了 CORS 并将示例 blob 设置为 公开测试,但仍然收到跨域错误 放置请求。我需要带有公共 blob 的 SAS 吗?

    您可以使用 jQuery 或 Angular(取决于您的舒适程度)。我写了一篇关于使用 jQuery 上传 blob 的博文,您可以在此处阅读:http://gauravmantri.com/2013/12/01/windows-azure-storage-and-cors-lets-have-some-fun/。我找不到它,但我记得有人用 Angular 写过同样的东西。

    关于 CORS 错误(我也看到了您的其他问题),尝试将允许的来源设置为 "*"。出于某种原因,将原点设置为"localhost:someport" 效果不佳。

    您不需要 SAS 来读取(下载)公共 blob。但是,您需要 SAS 来执行上传和更改 blob 属性等操作。

    4) 除了 PUT 之外,我还需要覆盖 现有图片?

    我不这么认为。我建议阅读 blob 存储 REST API,以便在请求中传递正确的标头。

    5) 最重要的是:他们的替代架构或解决方案是 鉴于用户希望查看他们的 快速上传图片

    就我个人而言,这种架构看起来不错。事实上,我在我的应用程序中大量使用它。但我也很想听听其他人的想法。

    【讨论】:

    • 感谢 Gaurav,我需要考虑让 SAS 为上传工作,并感谢审查。我尝试通过 Azure 存储资源管理器将来源设置为通配符,但它指出“允许的来源必须是值 URI”
    • 是的,Azure 存储资源管理器有这个问题 :(。试试这里的代码:stackoverflow.com/questions/25826216/….HTH。
    • 每个服务器端容器创建,这里记录的 Node.js 是否是一个选项? azure.microsoft.com/en-us/documentation/articles/…
    • 绝对。您可以使用 Node.js Azure 存储 SDK 为您的用户创建 Blob 容器。
    • 如果您使用 Node 上传 blob,那么内容将始终通过您的服务器。通过 SAS 上传,用户将直接上传您的存储帐户中的内容,而无需通过您的服务器进行路由。这将提高您的应用程序恕我直言的整体性能。
    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2016-02-05
    • 2018-08-14
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多