当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Loopback-component-storage:如何在上传到Amazon S3之前将图像转换为缩略图

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用环回组件存储将图像上传到服务器. 我想将通过服务器上传的每个图像转换为缩略图视图并将其保存到容器中. 最初我使用本地文件存储来存储文件,一切正常. 在文件存储中
我正在使用环回组件存储将图像上传到服务器.

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

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

但现在我想使用带有环回组件存储的amazon S3存储我的图像.通过遵循文档,我可以轻松地将图像上传到亚马逊S3桶.但我无法弄清楚如何将图像大小调整为缩略图视图,并在Amazon S3服务器上存储不同版本的图像以及原始图像.

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

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

使用quickthumb

这是我如何使用它与loopback.

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服务器之前实现调整图像大小,我需要像req.files.image这样的快速语法,但这在环回中是不可能的?
请帮忙.

你可以完成你正在尝试的,但它需要三个步骤.

首先,使用loopback-component-storage在本地上载文件.一旦你有它,你可以根据自己的喜好创建尽可能多的图像调整.但是你需要给图像一些独特的名称以避免碰撞.

其次,使用AWS Node SDK将这些新映像推送到S3存储桶.

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

这很简单.看看我把这个问题放在一起来解决这些问题:

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

干杯!

丹尼斯

网友评论