Exemplo n.º 1
0
        public async Task <IActionResult> Post(IFormFile file, string objectKey)
        {
            var fileName = Path.GetFileName(
                ContentDispositionHeaderValue
                .Parse(file.ContentDisposition)
                .FileName
                .Trim('"'));

            if (string.IsNullOrWhiteSpace(objectKey))
            {
                objectKey  =  S3KeyGenerator.GenerateObjectKey(fileName);
            }

            using (var stream = file.OpenReadStream())
            {
                ImageInfo info  =  ImageProcessor.GetImageInfo(stream);

                ImageUploadedModel model = await ImageStore.UploadImage(
                    S3Settings.OriginalBucketName,
                    S3Settings.OriginalBucketUrl,
                    objectKey,
                    S3StorageClass.Standard,
                    S3CannedACL.Private,
                    S3Settings.VaultName,
                    info);

                if (model.Exception != null)
                {
                    Logger.LogError("An error occured while uploading to S3", model.Exception);
                    return(StatusCode((int)HttpStatusCode.InternalServerError));
                }

                return(Created(model.ObjectLocation, model));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Get(string originalKey, int?width, int?height, string versionId)
        {
            if (string.IsNullOrWhiteSpace(versionId))
            {
                versionId = await ImageStore.GetLatestVersionId(S3Settings.OriginalBucketName, originalKey);

                if (string.IsNullOrWhiteSpace(versionId))
                {
                    // this image doesn't exist
                    return(NotFound());
                }
            }

            string resizedKey = S3KeyGenerator.GenerateObjectKeyWithSize(originalKey, width, height, versionId);

            // check if the resized image exists
            if (await ImageStore.ImageExists(S3Settings.ResizedBucketName, resizedKey))
            {
                return(Redirect(S3Settings.ResizedBucketUrl + resizedKey));
            }

            Stream responseStream = await ImageStore.GetImage(S3Settings.OriginalBucketName, originalKey, versionId);

            // resize the image
            ImageInfo info = ImageProcessor.Resize(responseStream, width, height);

            ImageUploadedModel model = await ImageStore.UploadImage(
                S3Settings.ResizedBucketName,
                S3Settings.ResizedBucketUrl,
                resizedKey,
                S3StorageClass.ReducedRedundancy,
                S3CannedACL.PublicRead,
                null,
                info);

            if (model.Exception != null)
            {
                Logger.LogError("An error occured while uploading to S3", model.Exception);
                return(StatusCode((int)HttpStatusCode.InternalServerError));
            }

            return(Redirect(S3Settings.ResizedBucketUrl  +  resizedKey));
        }