小编tom*_*aka的帖子

s3.getObject().createReadStream():如何捕获错误?

我正在尝试编写程序从s3获取zip文件,解压缩,然后将其上传到S3.但我发现了两个我无法捕捉到的例外情况.

1. StreamContentLengthMismatch: Stream content length mismatch. Received 980323883 of 5770104761 bytes.这种不规则发生.

2. NoSuchKey: The specified key does not exist.当我输入错误的密钥时会发生这种情况.

当发生这两个异常时,该程序崩溃.

我想正确地抓住并处理这两个例外.

我想防止崩溃.

   const unzipUpload = () => {
        return new Promise((resolve, reject) => {
            let rStream = s3.getObject({Bucket: 'bucket', Key: 'hoge/hoge.zip'})
                .createReadStream()
                    .pipe(unzip.Parse())
                    .on('entry', function (entry) {
                        if(entry.path.match(/__MACOSX/) == null){

                            // pause
                            if(currentFileCount - uploadedFileCount > 10) rStream.pause()

                            currentFileCount += 1
                            var fileName = entry.path;
                            let up = entry.pipe(uploadFromStream(s3,fileName))

                            up.on('uploaded', e => {
                                uploadedFileCount += 1
                                console.log(currentFileCount, …
Run Code Online (Sandbox Code Playgroud)

javascript stream amazon-s3 amazon-web-services node.js

21
推荐指数
2
解决办法
2万
查看次数