0

当我尝试通过我的 API 在 S3 上上传文件时遇到问题

我使用“putObject”方法,令我惊讶的是,当我在本地运行我的无服务器应用程序时它可以工作,使用无服务器离线,我可以将所有文件推送到 s3 上,我可以打开它

但是当我在 API Gateway 上部署我的应用程序时,如果我使用 API Gateway 路由,文件比原始文件轻,我无法打开它,它告诉我文件已损坏

如果有人有想法,它真的可以帮助我

谢谢

我的 putObject 方法看起来像这样

const bucketName = _.get(getBucket,'bucketName');
        const extension = _.get(data,'media.filename').split('.').pop();
        const keyName = _.get(data,'keyName') + '.' + extension;
        const content = _.get(data,'media.content')
        
        let params = {
            Bucket: bucketName,
            Key: keyName,
            ContentType: _.get(data,'media.contentType'),
            Body: content,
            ACL: 'public-read'
        };

        return new Promise((resolve, reject) => {
        s3.putObject(params, function(err, data) {
            err
                ?
                reject(console.log(err)) :
                resolve(
                    response(200,"Object Added")
                );
        });
        });
4

1 回答 1

1

通过 ApiGateway 上传文件不是一个好主意,我强烈建议使用已签名的 URL https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

如果你想通过 ApiGateway 上传,那么提供的信息是不够的。尝试记录收到的 lambda 事件,这应该会有所帮助

于 2020-08-21T08:27:40.347 回答