我正在使用 Node.js 和 Typescript 编写无服务器 api。我想从客户端发送一个 .xlsx 文件并将该文件保存在 S3 存储桶中。
我尝试使用 npm 包busboy。并且无法读取保存在 S3 存储桶中的文件(损坏或未完全写入)。看起来我没有正确写入文件。
这是我的代码
import * as busboy from 'busboy';
import AWS = require('aws-sdk');
import { S3 } from 'aws-sdk';
export const saveExcel: Handler = (event: APIGatewayEvent, context: Context, cb: Callback) => {
const contentType = event.headers['Content-Type'] || event.headers['content-type'];
const bb: busboy.Busboy = new busboy({ headers: { 'content-type': contentType } });
bb.on('file', function (fieldname, file, filename, encoding, mimetype) {
file
.on('data', data => {
const params: S3.PutObjectRequest = {
Bucket: 'bucket-name',
Key: filename,
Body: data
};
s3.upload(params, function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
})
})
.on('end', () => {
console.log("done");
});
});
bb.end(event.body);
}
我究竟做错了什么?还是我必须尝试任何其他图书馆?