/// <summary> /// Конструктор контроллера /// </summary> public FileController( FileDisplayingService displayingService, FileManagementService managementService, IPostedFileValidator postedFileValidator, ILogger logger) { _displayingService = displayingService; _managementService = managementService; _postedFileValidator = postedFileValidator; _logger = logger; }
/// <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(); }