根据我们的系统所在的环境,它将使用不同的“文件系统”来管理用户上传的文件。例如,在我们的开发环境中,我们使用 Windows 文件系统,但在生产环境中,我们使用 Azure Blob 存储。
使用提供者模型,我创建了以下接口:
public interface IFileRepositoryProvider
{
void SaveFile(string fileName, Stream fileStream);
void DeleteFile(string fileName);
bool Exists(string fileName);
Stream GetStream(string fileName);
}
- 文件如何保存/删除/等的细节完全由
IFileRepositoryProvider
. - Azure blob 存储存在一些限制。我不一定要为文件提供直接的“URI”,就像我们可以将它托管在 Web 服务器上的某个虚拟目录中一样。 出于这个原因,我决定完全使用流。 由客户端代码根据需要处理流。
问题:
- 会更好
FileStream
还是MemoryStream
更好? - 将文件公开为字节数组是否有好处?
- 你能看出这种方法有什么严重的缺点吗?