azure - 从 Azure 存储提供文件
问题描述
我有一个简单的需求,但是有很多天蓝色的选择,我不知道从哪里开始。
我在 azure 上有一个 AppService(网站),我想从中提供静态 PDF 以供下载。换句话说,网站上有一个培训页面,在这个页面上,我想有 PDF 的 url 来下载它。
但我不希望 PDF 成为 AppService 文件的一部分,我希望将它们存储起来,以便它们与网站文件分开。
这应该怎么做?
到目前为止我发现的是:Azure Blob 存储,但我不清楚如何使用带有 URL 的存储。这些示例看起来像是使用代码而不是公共 URL 进行下载。
我也看过 Azure CDN,但这似乎比我想要的要多。只需要一个简单的位置来存储和下载文件。
解决方案
您可以将 Blob 容器设为公开,以便知道该链接的任何人都可以下载该文件。在这种情况下,您可以只链接到文件或从您的应用程序返回 302 重定向到链接,这也会启动下载。
另一种选择是使用 SAS 令牌。这些临时令牌是使用您的存储帐户访问密钥生成的,并附加到 URL。然后,您可以在链接中提供此最终 URL,以允许用户下载文件。在此选项中,容器可以保密,您可以控制谁可以访问什么。现在令牌只在过期之前有效(这次由您决定),因此用户可以将链接提供给另一个人,他们也可以在该时间内下载文档。
第三种选择是将文件通过您的应用程序传递给用户。从您的后端下载文件,然后将其流式传输给用户以供下载。此选项在您的后端占用更多资源,因为每次下载都会使用线程和 IO。此选项是最安全的,因为您可以控制谁可以下载什么。
推荐阅读
- android - 防止用户在 Facebook 和 Google 登录按钮上单击两次
- .htaccess - 如果我从 Google 访问,err_too_many_redirects 错误
- scala - spark根据前一行的旧值对列进行计算
- java - 如何在java中测试RMI程序
- azure - 我们如何在 Xamarin 表单中删除/自定义 Azure AD B2C 身份验证 webview 页面标题栏?
- logging - Stackdriver Logging、Logback 和 Logger 名称
- java - 混合实例和静态同步方法,得到意想不到的测试输出
- reactjs - 点击地图后刷新调用api
- c# - 如何隐藏由于此过程而创建的 CMD 窗口?
- hibernate - Hibernate Criteria API - 在字段上使用 asc/desc 排序,多列损坏