示例#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;
        }
        /// <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);
            }
        }