public FileReference GetFile(FileStorageArea StorageArea, string FileHandle)
        {
            var    fileDir        = new DirectoryInfo(Path.Combine(BasePath, FileHandle.ToString()));
            string contentType    = string.Empty;
            string filename       = null;
            long   fileLength     = 0;
            bool   thumbnailFound = false;

            foreach (var fileInfo in fileDir.GetFiles())
            {
                if (fileInfo.Name == "_metadata.xml")
                {
                    contentType = XElement.Load(fileInfo.FullName).Element("contentType").Value;
                }
                else if (!fileInfo.Name.StartsWith("_thumbnail"))
                {
                    filename   = fileInfo.Name;
                    fileLength = fileInfo.Length;
                }
                else
                {
                    thumbnailFound = true;
                }
            }
            return(new FileReference(StorageArea, filename, fileLength, FileHandle, contentType)
            {
                HasThumbnail = thumbnailFound
            });
        }
        public FileReference Store(FileStorageArea StorageArea, string Name, string ContentType,
                                   System.IO.Stream Stream)
        {
            Guid fileHandle;
            long Size;

            StoreFile(Name, ContentType, Stream, out fileHandle, out Size);

            return(FileReference.FromNewFile(StorageArea, Name, Size, fileHandle.ToString(), ContentType));
        }
        public Stream GetContentStream(FileStorageArea StorageArea, string FileHandle)
        {
            var fileDir = new DirectoryInfo(Path.Combine(BasePath, FileHandle.ToString()));

            foreach (var fileInfo in fileDir.GetFiles())
            {
                if (fileInfo.Name != "_metadata.xml" && !fileInfo.Name.StartsWith("_thumbnail"))
                {
                    return(fileInfo.OpenRead());
                }
            }
            return(null);
        }
        public FileReference Store(FileStorageArea fileStorageArea, FileReference fileRef)
        {
            using (var stream = fileRef.GetContentStream())
            {
                Guid fileHandle;
                long Size;
                StoreFile(fileRef.Name, fileRef.ContentType, stream, out fileHandle, out Size);

                var fileRef2 = new FileReference(fileStorageArea, fileRef.Name, Size, fileHandle.ToString(), fileRef.ContentType);
                fileRef2.HasThumbnail = fileRef.HasThumbnail;

                return(fileRef2);
            }
        }