node.js - 环回组件存储 : How to convert image to thumbnail before uploading to Amazon S3

标签 node.js express amazon-s3 loopbackjs strongloop

我正在使用环回组件存储 将图像上传到服务器。

我想将通过服务器上传的每个图像转换为缩略图 View 并将其保存到容器中。 最初我使用本地文件存储来存储文件,一切正常。

在文件存储中,我使用 “quickthumb” 将图像转换为缩略图,然后将原始图像和缩略图大小的图像保存到容器中。

但现在我想使用带有环回组件存储的amazon S3 来存储我的图像。按照文档,我可以轻松地将图像上传到 amazon S3 存储桶。但我无法弄清楚如何将图像调整为缩略图 View 并将不同版本的图像与原始图像一起存储在 Amazon S3 服务器上。

这是我在使用文件存储实现它时所做的事情。

现在将其图像转换为缩略图大小

使用 quickthumb

这是我如何将它与环回一起使用。

common/models/container.js

module.exports = function(Container) {

    var qt = require('quickthumb');

    Container.afterRemote('upload', function(ctx, res, next) {

        var file = res.result.files.file[0];
        var file_path = "./server/storage/" + file.container + "/" + file.name;
        var file_thumb_path = "./server/storage/" + file.container + "/thumb/" + file.name;

        qt.convert({
            src: file_path,
            dst: file_thumb_path,
            width: 100
        }, function (err, path) {

        });

        next();
    });

};

但现在要在将图像上传到 S3 服务器之前调整图像大小,我需要一些 express 语法,如 req.files.image 但这在回送中是不可能的? 请帮忙。

最佳答案

您可以完成您正在尝试的事情,但它需要三个步骤。

首先,使用 loopback-component-storage 将文件上传到本地。一旦有了它,您就可以根据需要对图像进行尽可能多的调整。但是您需要为图像指定某种唯一的名称以避免冲突。

其次,使用 AWS Node SDK 将这些新图像推送到您的 S3 存储桶。

最后,删除本地文件以自行清理。

这很简单。查看我为解决此类问题而整理的这个食谱:

https://github.com/dashby3000/recipe-s3-image-uploader

干杯!

丹尼斯

关于node.js - 环回组件存储 : How to convert image to thumbnail before uploading to Amazon S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32704530/

相关文章:

javascript - 套接字在foreach中挂起多个get调用

c# - 将套接字服务器从 Node.js 移植到 C#

node.js - Sequelize js postgresql用户定义类型

javascript - Node.js/Express post 方法日志在控制台中未定义

node.js - 使用 NodeJS Multer 转换上传

路由的 REST API 最佳实践

php - 存储桶上的 S3 List Objects 请求以获取额外的 key (> 1000)

node.js - 是否可以在不同网络中创建点对点连接?

python - 在 Python 中读取位于 S3 子文件夹下的文件的内容

amazon-web-services - 使用 python 和 boto 在 s3 中公开一个文件