예제 #1
0
        public FileSystemBlobWriter(
            BlobId blobId,
            FileNameWithExtension fileName,
            String destinationFileName,
            IFileSystemBlobDescriptorStorage fileSystemBlobDescriptorStorage,
            ILogger logger)
        {
            BlobId   = blobId;
            FileName = fileName;
            _logger  = logger;

            _descriptor = new FileSystemBlobDescriptor()
            {
                BlobId = BlobId,
                FileNameWithExtension = FileName,
                Timestamp             = DateTime.Now,
                ContentType           = MimeTypes.GetMimeType(FileName)
            };

            //Create a wrapper of the stream
            var originalStream = new FileStream(destinationFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

            originalStream.SetLength(0);
            _writableStream = new FileSystemBlobStoreWritableStream(originalStream, this);
            _writableStream.StreamClosed    += WritableStreamClosed;
            _fileSystemBlobDescriptorStorage = fileSystemBlobDescriptorStorage;
        }
예제 #2
0
        public FileSystemBlobWriter(
            BlobId blobId,
            FileNameWithExtension fileName,
            String destinationFileName,
            IMongoCollection <FileSystemBlobDescriptor> blobDescriptorCollection,
            ILogger logger)
        {
            BlobId   = blobId;
            FileName = fileName;
            _blobDescriptorCollection = blobDescriptorCollection;
            _logger = logger;

            _descriptor = new FileSystemBlobDescriptor()
            {
                BlobId = BlobId,
                FileNameWithExtension = FileName,
                Timestamp             = DateTime.Now,
                ContentType           = MimeTypes.GetMimeType(FileName)
            };
            _destinationFileName = destinationFileName;
            _blobDescriptorCollection.Save(_descriptor, _descriptor.BlobId);

            //Create a wrapper of the stream
            var originalStream = new FileStream(destinationFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

            originalStream.SetLength(0);
            _writableStream = new FileSystemBlobStoreWritableStream(originalStream, _descriptor, _blobDescriptorCollection, this);
        }
        public void SaveDescriptor(FileSystemBlobDescriptor fileSystemBlobDescriptor)
        {
            if (fileSystemBlobDescriptor == null)
            {
                throw new ArgumentNullException(nameof(fileSystemBlobDescriptor));
            }

            var fileName = _directoryManager.GetDescriptorFileNameFromBlobId(fileSystemBlobDescriptor.BlobId);

            File.WriteAllText(fileName, JsonConvert.SerializeObject(fileSystemBlobDescriptor));
        }
예제 #4
0
 public FileSystemBlobStoreWritableStream(
     Stream wrapped,
     FileSystemBlobDescriptor descriptor,
     IMongoCollection <FileSystemBlobDescriptor> blobDescriptorCollection,
     IBlobWriter writer)
 {
     _wrapped    = wrapped;
     _descriptor = descriptor;
     _md5        = MD5.Create();
     _blobDescriptorCollection = blobDescriptorCollection;
     _writer = writer;
 }
예제 #5
0
 public void SaveDescriptor(FileSystemBlobDescriptor fileSystemBlobDescriptor)
 {
     _collection.Save(fileSystemBlobDescriptor, fileSystemBlobDescriptor.BlobId);
 }