1

我刚刚完成了我的 asp MVC 5 网站,该网站具有上传、显示和下载文件的能力。离线时,我将文件上传到根目录内的随机文件夹,如 ~/assest/images 等,效果很好。

然后我部署到windows Azure网站服务,开始意识到根目录已经无法访问了。我开始做研究,发现只有 App_Data 可以存储文件。唉,这不是一个好的解决方案,我们无法检索文件,如图像,以在剃刀视图中显示。

我还找到了 BLOB Storage,看起来很棒,但是没有足够的教程,我无法成功使用。其中大部分是针对 MVC Web 角色的,而在我的情况下是 MVC WEB SITES。

现在,我想找到另一种选择,是否有任何特殊文件夹或解决方法可以将一个折叠在可以存储文件和检索它们的根目录中?事实上,我的应用程序只需要几张图片和 PDF 来存储。

谢谢

4

3 回答 3

3

您不应该使用 App_Data 来存储使用 Azure 网站上传的文件。您只能获得有限的空间,如果您将站点扩展到更多实例,则上传的文件将仅在上传文件的实例上可用!

处理上传文件的正确方法确实是使用 Blob 存储。您可以从您的网站轻松使用它。只需安装 Azure .NET 存储客户端库(可从 Nuget 获得)。

在http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/上有一个关于使用 Azure .NET 存储客户端库的完整教程

通过公开 Blob 容器,您可以轻松地在您的网站上显示上传的图像。然后你可以直接链接到你的 blob 容器中的图像 - 它会有一个类似的 URL

https://您的存储帐户名称.blob.core.windows.net/您的 Blob 容器名称/filename.jpg

于 2014-07-02T12:23:02.580 回答
2

如果您不希望需要太多存储空间,您可以将文件存储在站点文件夹中的任何位置。如果您将文件上传到 APP_DATA 以外的任何地方,我不确定为什么会看到错误,您应该在任何地方都具有完全的写入权限。

与其他人的评论相反,如果您将文件存储在站点的本地存储中,那么您的文件可以安全地防止虚拟机出现故障,并且可以立即用于所有其他实例。这是因为文件实际上并没有存储在本地 VM 上,这只是一种错觉。(唯一的例外是如果您将内容存储在 %TEMP% 文件夹中。这些内容实际上保存在 VM 上,并且随时可能消失)。

也就是说,如果您期望大量数据 I/O 或需要大量存储,那么 Blob 存储是最好的选择。

于 2014-07-02T18:53:19.533 回答
1

我不希望为 Azure 网站或 Web 服务构建依赖本地存储的解决方案。您无法扩展此解决方案,并且 VM 可能会重新映像等。

我会查看 blob 存储,我将上传限制在 4mb 以下,因为我在将它们写入 blob 存储之前在服务器上验证它们,但我相信您可以将其直接流式传输到存储中。

这是从 MVC 上传大文件的指南,可以帮助您入门。

于 2014-07-02T11:05:24.783 回答