コード例 #1
0
        public async Task <IActionResult> Index([FromServices] IImageParameterFixer parameterFixer,
                                                [FromRoute] ImageParameter parameter)
        {
            parameter = parameter.GetFixed(parameterFixer);
            var       relativePath = parameter.GetRelativePath();
            var       physicalPath = Path.GetFullPath(relativePath);
            IFileInfo fileInfo;
            var       contentType = "image/" + parameter.Format;

            if (System.IO.File.Exists(physicalPath))
            {
                fileInfo = _fileProvider.GetFileInfo(relativePath);
                return(File(fileInfo.CreateReadStream(), contentType));
            }

            var physicalFolder = Path.GetDirectoryName(physicalPath);

            if (!Directory.Exists(physicalFolder))
            {
                Directory.CreateDirectory(physicalFolder);
            }

            var imageData = await _fileStore.GetImageData(Guid.Parse(parameter.Id));

            if (imageData == null)
            {
                return(NotFound());
            }
            _imageService.ImageCastAndSaveToFile(imageData.Bytes, parameter.Size, parameter.ImageFormat, physicalPath);
            fileInfo = _fileProvider.GetFileInfo(relativePath);
            return(File(fileInfo.CreateReadStream(), contentType));
        }
コード例 #2
0
 public ImageParameter GetFixed(IImageParameterFixer fixer)
 {
     return(fixer.Fix(this));
 }
コード例 #3
0
 public ImageParameter GetFixed(IImageParameterFixer fixer)
 {
     return fixer.Fix(this);
 }