putObject 仅在 API 时在 S3 上上传损坏的文件

putObject upload broken files on S3 only when its by API

当我尝试通过 API

将文件上传到 S3 时遇到问题

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

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

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

谢谢

我的 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")
                );
        });
        });

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

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