c# - 将文件上传到 Azure 上托管的 ASP.NET Core Web 应用程序的目录

标签 c# azure asp.net-core asp.net-core-mvc asp.net-core-2.2

我使用 Azure 应用服务和 Azure SQL 数据库来托管 ASP.NET Core Web 应用程序。

此应用程序涉及将文档上传到目录。在我的本地开发机器上,我只是使用:

var fileUploadDir = $"C:\\FileUploads";

在 Azure 上,我将使用什么功能来创建目录结构并将文件放置在目录结构中:

var filePath = Path.Combine(fileUploadDir, formFile.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
     await formFile.CopyToAsync(stream);
}

我将使用什么 Azure 功能?是否有用于文件系统操作的 API,或者我可以简单地更新现有代码使用 Azure 目录路径的 fileUploadDir 吗?

最佳答案

使用 Azure 应用服务,您可以以相同的方式上传文件。您只需在 wwwroot 文件夹中创建目录即可。如果您有多个实例,此文件夹将在它们之间共享,如文档 File access across multiple instances 中所述。 :

File access across multiple instances The home directory contains an app's content, and application code can write to it. If an app runs on multiple instances, the home directory is shared among all instances so that all instances see the same directory. So, for example, if an app saves uploaded files to the home directory, those files are immediately available to all instances.

尽管如此,根据应用程序的需要,更好的解决方案可能是使用 blob 存储来管理文件,尤其是在文件必须持久存在的情况下。例如,如果您想在上传后使用 azure 函数触发异步处理,则使用 blob 也很有用。

对于临时文件的短期处理,我使用主目录没有任何问题。一旦处理时间较长,或者如果我想保留文件,我倾向于使用异步处理和 blob 存储。

blob存储解决了用户访问主目录中文件的问题,允许依赖于专用于存储的服务,而不是与应用服务相关的类型文件系统的简单存储。写入、删除很简单,并提供了许多其他可能性:通过 REST 服务直接访问、通过共享访问签名访问、异步处理...

关于c# - 将文件上传到 Azure 上托管的 ASP.NET Core Web 应用程序的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857251/

相关文章:

python - 是否有任何包可以在Azure中使用python编程将doc文件转换为docx格式?

python - 无法在 docker 容器内安装 pip azure-cognitiveservices-speech

css - MVC Bootstrap CSS 布局左对齐

c# - 模拟 IOptionsMonitor

c# - 引用类型的 ref 修饰符

c# - [Out] 和 C# 中的 out 有什么区别?

c# - 尝试将粗体应用于整行但不断获得空引用 - NPOI

c# - Azure 函数从大 JSON 格式到 SQL

c# - Dropdownlist.selecteditem.value = null

c# - MVC Net Core 侧边栏导航菜单放置在_Layout.cshtml