[英]How to output image from s3.getObject(params).createReadStream() to HTML using node js
I have been trying to upload an image to s3 using multer and downloading it to a local path successfully using the below code. 我一直在尝试使用multer将图像上传到s3,并使用以下代码成功将其下载到本地路径。
routes.post('/updownload', upload.array('file'), function (req, res) {
var params = {
Bucket: "*******",
Key: "image1.jpeg"
};
var file = fs.createWriteStream('./uploads/file4.jpeg');
s3.getObject(params)
.createReadStream()
.on('error', function (err) {
console.log('Error reading file: ' + err.message);
file.end();
})
.pipe(file)
.on('error', function (err) {
err = true;
console.log('Error writing file:' + error.message);
file.end();
})
.on('finish', function (err) {
file.end();
if (!err) {
console.log('Successfully downloaded file from S3');
}
});
});
However, i am not sure, how do i send the response back to HTML with parameters like Headers, Body, Content-Type, status code and status message based on success/failure of image getting downloaded. 但是,我不确定,如何根据下载图像的成功与否,使用标头,正文,内容类型,状态代码和状态消息之类的参数将响应发送回HTML。
Kindly help and let me know if i am going in a correct path. 请帮助,让我知道我走的路是否正确。
Buffer
and determine the ContentType
from the file you downloaded and use: res.send(Buffer)
: http://expressjs.com/en/api.html#res.send Buffer
并从下载并使用的文件中确定ContentType
: res.send(Buffer)
: http : res.send(Buffer)
重新发送 Also see Node.js: How to read a stream into a buffer? 另请参阅Node.js:如何将流读入缓冲区?
I know, it has been quite a long time to answer this question. 我知道,回答这个问题已经很长时间了。 But thought, this would help someone.
但以为,这会帮助某人。 I was able to solve the issue with below code given:
我可以通过以下代码解决此问题:
const params = {
Bucket: '*********',
Key: image1.jpeg,
};
res.set('Content-Type', 'image/jpeg');
res.set('Content-Type', 'image/jpg');
res.set('Content-Type', 'image/png');
const stream = s3.getObject(params).createReadStream();
stream.on('error', err => {
logger.log({ level: 'error', messsage: 'stream error', error: `${err}` });
});
stream.pipe(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.