使用TypeScript将文件从请求直接上传到S3

时间:2019-11-26 05:34:13

标签: node.js typescript amazon-web-services amazon-s3

我正在收到来自FE到Typescript中我的BE代码的发布请求,我想将FE中从BE发送到BE的文件上传到AWS S3存储桶中。

这是我正在使用的代码:

import S3 from 'aws-sdk/clients/s3';
import aws from 'aws-sdk';
import fs from 'fs';
async writeDataset(datasetFile: any): Promise<boolean> {
            const FOLDER = 'sample';
            const BUCKET = 'sample-bkt';
            const bucket = new S3();
            const credentials = new aws.SharedIniFileCredentials({
                profile: 'test-dev'
            });
            bucket.config.credentials = credentials;
            bucket.config.region = 'us-east-1';
            fs.readFile(datasetFile.path, function(err, data) {
                const params = {
                    Bucket: BUCKET,
                    Key: FOLDER + datasetFile.originalname,
                    Body: data,
                    ACL: 'private'
                };
                bucket.upload(params, function() {
                    fs.unlink(datasetFile.path, function() {
                        if (err) {
                            console.error(err);
                        }
                    });
                    if (err) {
                        return false;
                    } else {
                        console.log('Successfully uploaded data');
                        return true;
                    }
                });
            });
}

由于我使用Postman(模拟FE调用),并且在ob中具有文件的路径字段datasetFile.path,因此上载的效果非常好,这就是fs.readFile(datasetFile.path, function(err, data) { ... }的原因,因为该文件是通过邮递员从本地PC上传的。

我要做的是能够从内存中将文件从request.files上传到S3,而无需使用fs.readFiledatasetFile.path

0 个答案:

没有答案