Пример #1
0
 /// <summary>
 /// Конструктор контроллера
 /// </summary>
 public FileController(
     FileDisplayingService displayingService,
     FileManagementService managementService,
     IPostedFileValidator postedFileValidator,
     ILogger logger)
 {
     _displayingService = displayingService;
     _managementService = managementService;
     _postedFileValidator = postedFileValidator;
     _logger = logger;
 }
Пример #2
0
        /// <summary>
        /// Сохранение файла.
        /// </summary>
        /// <param name="fileCreatingDto">DTO-объект с данными файла.</param>
        /// <exception cref="ArgumentNullException">
        /// Аргумент содержит null
        /// </exception>
        /// <exception cref="ArgumentException">
        /// Некорректный аргумент
        /// </exception>
        /// <exception cref="NotAllowedContentTypeException">
        /// Недопустимый MIME-тип данных.
        /// </exception>
        /// <exception cref="NotAllowedFileExtensionException">
        /// Недопустимое расширение файла.
        /// </exception>
        /// <exception cref="FileNotCreatedException">
        /// Не удалось создать файл. Подробности во вложенном исключении.
        /// </exception>       
        public void CreateFile(
            FileCreatingDto fileCreatingDto, 
            IPostedFileValidator postedFileValidator)
        {
            if (fileCreatingDto == null)
                throw new ArgumentNullException("fileCreatingDto");

            if (fileCreatingDto.PostedFile == null)
            {
                throw new ArgumentException(
                    "Аргумент fileCreatingDto должен содержать ссылку"
                        + " на инициализированный объект PostedFile",
                    "fileCreatingDto");
            }

            if (postedFileValidator == null)
                throw new ArgumentNullException("postedFileValidator");

            // валидация данных
            postedFileValidator.Validate(fileCreatingDto.PostedFile);

            var uploadedFile = new CreatingDtoToFileMapper().Map(fileCreatingDto);

            // формируем имя файла для сохранения
            uploadedFile.FilePath = _fileStore.StoringPath;
            string uploadedFileName = uploadedFile
                .OrigFileName
                .ToTranslit()
                .ToLower();

            // записываем файл на диск
            var fileStream = fileCreatingDto.PostedFile.InputStream;
            _fileStore.CreateFile(fileStream, ref uploadedFileName);

            uploadedFile.FileName = uploadedFileName;

            // сохраняем запись о загруженном файле в БД
            _repository.Create(uploadedFile);
            _repository.Save();
        }