使用 Azure 上传和访问图像

Uploading and accessing images with Azure

我想上传一些静态图片,稍后我将通过一些移动应用访问这些图片。我有一个很少使用的 Azure 帐户,所以我认为这是最好的地方,因此我将它们上传到 Azure 存储中的 "File Share"。

我天真地以为我可以让他们通过简单的 Web 请求访问这些文件 url

https://myplace.file.core.windows.net/app/images/bnb/shop/bugle_200_2.jpg

所有这些让我感到困惑的是 BadRequest 错误。我意识到我可以为每个文件创建一个共享访问签名 (SAS),但这似乎太过分了。

是否有更好的 Azure 功能可以使用?我不想必须使用 Azure API 来获取这些文件

我认为您应该使用的服务是 blob 存储,而不是文件存储。根据 the documentation,文件存储更多地用于 SMB 共享。

设置 Azure blob 存储时,您有几个不同的选项。如果这些静态图像没有任何 sensitive/secure,您可以考虑制作一个 public container 并像这样简单地访问文件。

如果您需要身份验证,则需要使用 azure 存储访问密钥或 azure 存储访问令牌。在这两者中,存储访问令牌是迄今为止最安全的。

您不需要为每个文件创建 SAS 令牌,而是授予它对容器的读取权限。同样,您必须根据应用程序的 security/sensitivity 需求对其进行调整。

为@CtrlDot 的出色回答再补充几点。

我完全同意您应该使用 Blob Storage 来存储静态内容。

关于容器权限,我实际上建议将权限 (ACL) 设置为 Blob,这样用户只能查看他们拥有 URL 的 blob,而不是枚举一个文件中的所有 blob容器(将容器 ACL 设置为 Container 将使用户能够列出容器中的 blob,这可能不是您想要的行为)。

除此之外,使用 Blob 存储还有两个明显的优势:

  1. 自定义域:您可以将 blob 存储映射到自定义域(例如静态 content.mywebsite.com)并使用它来提供内容,而不是使用 Azure Blob 存储标准端点(您的account.blob.core.windows.net)。
  2. CDN:您还可以使用 CDN 启用您的 blob 存储端点。然后内容将被复制到遍布全球的许多 CDN 节点,并从靠近用户的节点提供服务,从而改善用户体验。