我尝试在我的amazon S3主存储桶中发送一个包含某些商品的zip文件,并对HTTP请求进行响应。由于我对express.js比较陌生,并且我没有看到任何具体的手动方法,所以我使用了s3-zip,它没有关于如何在响应中发送文件的具体说明,而是将其输出到一个目录中:
const output = fs.createWriteStream(join(__dirname, 'use-s3-zip.zip'))
s3Zip
.archive({ region: region, bucket: bucket}, folder, [file1, file2, file3, file4])
.pipe(output)
下面是我对代码的一些修改:
app.get('/files', (request, response) => {
const objectIds = request.body.objectIds
const folder = request.body.folder
response.set('content-type', 'application/zip')
s3Zip
.archive({ s3: s3, bucket: aws_bucket_name }, folder, objectIds)
.pipe(response)
s3Zip.on('end', () => {
console.log('ended');
response.end();
})
});
但是,未定义s3Zip.on。
有没有人1)以前以这种方式使用过这个依赖项,并指出如何使它工作,或者2)有其他想法来实现我的目标?
先谢了。
1条答案
按热度按时间soat7uwm1#
您不需要用途:
response.end()
,.pipe
会处理这个问题。s3Zip
没有.on
方法,但s3Zip.archive
创建的流或