2

到目前为止,这是我的代码-我只想将图像缓冲区作为原始数据返回,而不是将其 toString 保存到数组中。

我在 http 200 响应的集成响应中将内容类型设置为 image/jpeg,但这是一个损坏的图像,因为我认为它是缓冲区的 toString 而不是原始数据。

exports.handler = function(event, context) {

    var srcKey = event.key || 'e_1.png';
    var max_size = event.size || 100;


    // Download the image from S3
    s3.getObject({
        Bucket: srcBucket,
        Key: srcKey
    }, function (err, response) {
        if (err)
            return context.fail('unable to download image ' + err);
        var original = gm(response.Body);
        original.size(function (err, size) {
            if (err)
                return context.fail('unable to download image ' + err);

            resize_photo(size, max_size, original, function (err, photo) {
                //res.setHeader('Content-Type', 'image/jpeg');
                context.succeed(photo);
            });
        });
    });

};
4

1 回答 1

1

这似乎不是LambdaAPI Gateway设计而设计的。鉴于其管道的状态,可能不支持二进制输出。尝试做其他事情 - 将图像存储回S3并将 a 发送回HTTP Redirectnew S3 URI。让客户端处理它,而不是试图让API Gateway管道处理二进制响应。

于 2015-08-12T21:39:10.883 回答