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; }
/// <summary> /// Standard Constructor /// </summary> /// <param name="db">The database where this component will save information /// for file descriptor. It is needed to perform queries.</param> /// <param name="collectionName">The name of the collection that will be used /// to store information of the file</param> /// <param name="baseDirectory">Base directory on filesystem where binary blob /// will be stored</param> /// <param name="counterService">Counter service to generate new <see cref="BlobId"/></param> public FileSystemBlobStore( IMongoDatabase db, String collectionName, String baseDirectory, ICounterService counterService, String userName, String password) { _directoryManager = new DirectoryManager(baseDirectory, FolderPrefixLength); _counterService = counterService; //_fileSystemBlobDescriptorStore = new FileSystemBlobDescriptorStore(_directoryManager); _mongodDbFileSystemBlobDescriptorStorage = new MongodDbFileSystemBlobDescriptorStorage(db, collectionName); _counterService = counterService; if (!String.IsNullOrEmpty(userName)) { PinvokeWindowsNetworking.ConnectToRemote(baseDirectory, userName, password); } }