从Azure存储提供文件

时间:2018-11-07 09:40:41

标签: azure azure-storage

我有一个简单的需求,但是有很多蔚蓝的选择,我不确定从哪里开始。

我在azure上有一个AppService(网站),我想从中提供静态PDF供下载。换句话说,网站上有一个培训页面,在此页面上,我希望有URL可以下载PDF。

但是我不希望PDF成为AppService文件的一部分,我希望它们存储在存储中,以便它们与网站文件分开。

这应该怎么做?

到目前为止,我发现的是:Azure Blob存储,但是我不清楚如何将其与URL一起使用。这些示例看起来像他们在使用代码而不是公共URL来下载。

我也查看过Azure CDN,但这似乎超出了我的期望。只需一个简单的位置即可存储和下载文件。

3 个答案:

答案 0 :(得分:3)

您可以将PDFs上传到Azure Blob存储中的特殊容器中(例如,下载),并通过以下两种方式之一公开该容器和内容:

  • 仅对Blob的公共读取访问:容器中的Blob可以通过匿名请求读取,但是容器数据不可用。匿名客户端无法枚举容器内的blob。

  • 完全公共读取访问权限:匿名请求可以读取所有容器和blob数据。客户端可以通过匿名请求枚举容器中的blob,但不能枚举存储帐户中的容器。

然后可以通过类似https://yourStor.blob.core.windows.net/download/train1.pdf的URL来访问它们

答案 1 :(得分:3)

您可以将Blob容器设为公开,以便任何具有链接的人都可以下载文件。 在这种情况下,您可以直接链接到文件或从应用程序返回302重定向到链接,这也将启动下载。

另一种选择是使用SAS令牌。 这些临时令牌是使用您的存储帐户访问密钥生成的, 并附加到URL。 然后,您可以在链接中提供此最终URL,以允许用户下载文件。 在此选项中,容器可以保持私有状态,您可以控制谁可以访问什么。 现在,令牌仅在令牌到期之前才有效(您决定这次),因此用户可以将链接提供给其他人,他们还可以在该时间内下载文档。

第三个选项是通过应用程序将文件通过管道传递给用户。 从后端下载文件,然后将其流式传输给用户进行下载。 该选项在您的后端占用更多资源,因为每次下载都使用线程和IO。 此选项是最安全的,因为您可以控制谁可以下载什么。

答案 2 :(得分:0)

扩展接受的答案

创建一个存储帐户,例如mystorage

在存储帐户中,创建一个容器,例如mycontainer

在容器上,将访问策略设置为Blob(仅对blob进行匿名读取访问)。

将您的文件(例如myfile.txt)上传到容器。

查看文件属性。它将以以下格式显示文件的URL:https://mystorage.blob.core.windows.net/mycontainer/myfile.txt

请注意,URL区分大小写。