【问题标题】:putObject upload broken files on S3 only when its by APIputObject 仅在通过 API 时才在 S3 上上传损坏的文件
【发布时间】:2020-08-21 07:36:54
【问题描述】:

当我尝试通过我的 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")
                );
        });
        });

【问题讨论】:

    标签: amazon-s3 aws-api-gateway serverless serverless-offline


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,帮了大忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2019-09-25
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多