gpt4 book ai didi

node.js - 在 NodeJS 中将 Jimp 模块与 Amazon AWS S3 结合起来

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:51 26 4
gpt4 key购买 nike

我想要实现以下目标:

  1. 将图片上传到我的后台
  2. 调整此图片的大小以减小图像大小。
  3. 将此图片上传到 Amazon AWS S3。

我不知道如何将图片直接存储到 Amazon AWS S3,因此我先将其上传到我的后台。

我的代码:

router.post('/fileupload', function(req, res){

// Prepare data
var file = req.files.upfile;
var uploadpath = 'profilepicture/' + req.session.user + '.jpg';
var AWS = require('aws-sdk');
var fs = require('fs');
AWS.config.update({
accessKeyId: **,
secretAccessKey: **
});

// Upload file
file.mv(uploadpath,function(err){
if (err) throw err;

// Read in the file, convert it to base64, store to S3
Jimp.read(uploadpath, function (err, data) {
if (err) throw err;

// Reduce size
data.resize(400, Jimp.AUTO).quality(100).write(uploadpath);

var s3 = new AWS.S3();
var stream = fs.createReadStream(uploadpath);

s3.putObject({
Bucket: bucketAmazon,
Key: req.session.user + '.jpg',
ContentType: 'image/jpg',
Body: stream,
ContentEncoding: 'base64',
ACL: 'public-read',
Metadata: {
'Content-Type': 'image/jpeg'
}
}, function (resp) {
console.log(arguments);
console.log('Successfully uploaded package.');
return res.render('settings', {
user: req.session.user,
logged: true,
wrongPicture: false
});
});
});
});
});

但是,当我运行此代码时:文件已上传到我的后台并正确裁剪,但在 Amazon AWS S3 中它显示大小为“0 B”。

如果我删除行 data.resize(400, Jimp.AUTO).quality(100).write(uploadpath),则文件会正确上传到 Amazon AWS S3,但图片当然不会缩小。

最佳答案

您可以使用write回调来保证文件在上传开始之前写入。

...
data.resize(400, Jimp.AUTO).quality(100).write(uploadpath, () => {
// upload to s3 code here
});

关于node.js - 在 NodeJS 中将 Jimp 模块与 Amazon AWS S3 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49739852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com