如何获取在ASP.NET中上传到S3的图像的缩略图?

时间:2019-03-09 17:14:43

标签: amazon-web-services wcf amazon-s3 aws-sdk-net

我正在尝试使用分段上传API 将大图像上传到 AWS S3 。从UI,我正在发送图像的块(blob),当最后一部分到达时,完成上传并获取上传文件的url。效果很好。

示例代码:

public UploadPartResponse UploadChunk(Stream stream, string fileName, string uploadId, List<PartETag> eTags, int partNumber, bool lastPart)
{
    stream.Position = 0;

    //Step 1: build and send a multi upload request
    if (partNumber == 1)
    {
        var initiateRequest = new InitiateMultipartUploadRequest
        {
            BucketName = _settings.Bucket,
            Key = fileName
        };

        var initResponse = _s3Client.InitiateMultipartUpload(initiateRequest);
        uploadId = initResponse.UploadId;
    }

    //Step 2: upload each chunk (this is run for every chunk unlike the other steps which are run once)
    var uploadRequest = new UploadPartRequest
                        {
                            BucketName = _settings.Bucket,
                            Key = fileName,
                            UploadId = uploadId,
                            PartNumber = partNumber,
                            InputStream = stream,
                            IsLastPart = lastPart,
                            PartSize = stream.Length
                        };

    var response = _s3Client.UploadPart(uploadRequest);

    //Step 3: build and send the multipart complete request
    if (lastPart)
    {
        eTags.Add(new PartETag
        {
            PartNumber = partNumber,
            ETag = response.ETag
        });

        var completeRequest = new CompleteMultipartUploadRequest
        {
            BucketName = _settings.Bucket,
            Key = fileName,
            UploadId = uploadId,
            PartETags = eTags
        };

        try
        {
            var res = _s3Client.CompleteMultipartUpload(completeRequest);
            return res.Location;
        }
        catch
        {
            //do some logging and return null response
            return null;
        }
    }

    response.ResponseMetadata.Metadata["uploadid"] = uploadRequest.UploadId;
    return response;
}

现在,我需要获取上传图像的缩略图,并将该图像也上传到Thumbnails目录中。

因此,基本上,当原始图像的最后一部分(块)到达时,我正在完成上传并检索文件url。那时,我还需要上传缩略图并获取缩略图网址。

我看到人们指的是 lambda 函数,但不知道如何将其合并到我的多部分api代码设置中。

有人可以给我一些指导吗?预先感谢。

0 个答案:

没有答案