代码之家  ›  专栏  ›  技术社区  ›  Blake Rivell

使用托管在azure上的asp.net核心web应用程序将文件上载到目录

  •  -1
  • Blake Rivell  · 技术社区  · 6 年前

    我正在使用带有azure sql数据库的azure应用程序服务托管一个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?

    1 回复  |  直到 6 年前
        1
  •  2
  •   NicoD    6 年前

    有了azure应用服务,你可以用同样的方式上传你的文件。你只需要在wwwroot文件夹中创建你的目录。如果有多个实例,则将按照文档中的说明在它们之间共享此文件夹 File access across multiple instances 以下内容:

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

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

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

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