【问题标题】:Downloading images from S3 with AWS-SDK Nodejs downloads a corrupt image使用 AWS-SDK Nodejs 从 S3 下载图像会下载损坏的图像
【发布时间】:2019-06-18 06:07:15
【问题描述】:

我正在尝试使用适用于 nodejs 的 AWS-SDK 从 aws s3 下载图像。 该文件确实已下载,并且大小也正确。但是,文件已损坏并在 IDAT 中显示解压错误。

async download(accessKeyId, secretAccessKey, region, bucketName, baseImage) {
        console.log("Entered download");
        const s3 = new AWS.S3({region: region});
        const params = {
             Bucket: bucketName,
             Key: `base/${baseImage}`
         };

        const outStream = fs.createWriteStream(this.config.baseFolder + baseImage);
        const awsStream = s3.getObject(params, (uerr, data) => {
            if(uerr) throw uerr;
            console.log(`Base file downloaded successfully!`)
        }).createReadStream().pipe(outStream);

        awsStream.on('end', function() {
            console.log("successfully Downloaded");
        }).on('error', function() {
            console.log("Some error occured while downloading");
        });
    }

这是我关注的链接 - https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/requests-using-stream-objects.html 该文件应该被下载而没有任何错误。我尝试在堆栈上搜索并且有一些类似的问题,但是,他们使用 nodejs 将输出传递到前端,这些解决方案对我不起作用。

【问题讨论】:

    标签: javascript node.js aws-sdk-nodejs


    【解决方案1】:

    没有必要弄得一团糟,做这一切…… 可以直接通过 -

    async download(accessKeyId, secretAccessKey, region, bucketName, baseImage) {
            console.log("Starting Download... ")
            const s3 = new AWS.S3({
                accessKeyId: accessKeyId,
                secretAccessKey: secretAccessKey,
                region: region
            });
            const params = {
                Bucket: bucketName,
                Key: `base/${baseImage}`
             };
    
            s3.getObject(params, (err, data) => {
                if(err) console.error(err);
                console.log(this.config.baseFolder + baseImage);
                fs.writeFileSync(this.config.baseFolder + baseImage, data.Body);
                console.log("Image Downloaded.");
            });
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多