우리 시스템이 호스팅되는 환경에 따라 사용자가 업로드 한 파일을 관리하기 위해 다른 '파일 시스템'을 사용합니다. 예를 들어, 우리의 개발 환경에서 우리는 Windows 파일 시스템을 사용하지만, 우리는 Azure BLOB 저장소를 사용합니다. 공급자 모델을 사용업로드 된 파일을 처리하는 IFileRepositoryProvider
는, 나는 다음과 같은 인터페이스를 만들었습니다 파일이 저장되는 방법/삭제/등의
public interface IFileRepositoryProvider
{
void SaveFile(string fileName, Stream fileStream);
void DeleteFile(string fileName);
bool Exists(string fileName);
Stream GetStream(string fileName);
}
- 세부 사항은 완전히
IFileRepositoryProvider
의 구체적인 구현에 의해 캡슐화됩니다. - 하늘색 얼룩 저장에는 몇 가지 제한 사항이 있습니다. 필자는 웹 서버의 가상 디렉터리에서 호스팅되는 것처럼 직접 "URI"를 파일에 제공 할 수는 없습니다. 이러한 이유로 저는 스트림으로 완전히 작업하기로 결정했습니다. 필요에 따라 스트림을 처리하는 것은 클라이언트 코드에 달려 있습니다.
질문 :
- 겠습니까
FileStream
또는MemoryStream
더 나은? - 오히려 바이트 배열로 파일을 노출하는 이점이 있습니까?
- 이 접근법의 심각한 단점을 볼 수 있습니까?
Windows Azure에서 실행하면 BLOB가 공용 컨테이너 또는 개인 저장소에 저장됩니까? – MikeWo
개인 컨테이너. – davenewza