C# 使用托管在Azure上的ASP.NET核心Web应用程序将文件上载到目录

C# 使用托管在Azure上的ASP.NET核心Web应用程序将文件上载到目录,c#,azure,asp.net-core,asp.net-core-mvc,asp.net-core-2.2,C#,Azure,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.2,我正在使用Azure应用程序服务和Azure SQL数据库来托管ASP.NET核心Web应用程序 此应用程序涉及将文档上载到目录。在我的本地开发机器上,我只是使用: var fileUploadDir = $"C:\\FileUploads"; 在Azure上,我将使用什么功能创建目录结构并将文件放置在目录结构中 var filePath = Path.Combine(fileUploadDir, formFile.FileName); using (var stream = new File

我正在使用Azure应用程序服务和Azure SQL数据库来托管ASP.NET核心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文件夹中创建目录。如果您有多个实例,此文件夹将按照文档中的说明在它们之间共享 :

跨多个实例的文件访问主目录包含 应用程序的内容和应用程序代码可以写入其中。如果应用程序运行在 在多个实例中,主目录在所有实例之间共享 这样所有实例都可以看到相同的目录。例如,如果 应用程序将上传的文件保存到主目录,这些文件是 可立即用于所有实例

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

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


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

因为我将按原样上载文件并将其保留在那里。您建议我创建blob类型或通用存储的Azure存储帐户吗。此外,如果我走这条路,我认为上传会略有不同。我需要能够上传文件,删除文件,在我的网站上显示文件,从我的网站下载文件。另外,如果wwwroot文件夹仍然是一个选项,那么一个用户的文件将如何被另一个用户访问?我想我已经决定使用Azure存储帐户。只是想知道Blob或通用存储是否最适合我的需要。更新了我的答案。您对常规存储有什么想法:文件、队列、表、blob?谢谢您的更新。我的web应用程序需要用户能够上传文件(pdf、docx、jpeg等)以存储在服务器上的某个位置。通过该应用程序,他们将能够删除、查看、下载。在开发阶段,仅仅使用wwwroot文件夹中的一个目录就可以实现所有这些吗?即使人们不喜欢它,如果我暂时使用wwwroot技术,我是否希望在wwwroot中创建一个fileuploads文件夹并使用_hostingEnvironment.WebRootPath检索它,或者我是否可以将文件保留在wwwroot之外,并使用_hostingEnvironment.ContentRootPath访问它?