在JS

时间:2017-03-07 20:41:32

标签: javascript amazon-s3 unzip aws-sdk-nodejs

我从s3中删除对象。对象是压缩的,我需要能够解压缩它们并将内容与一些字符串进行比较。我的问题是我似乎无法正确解压缩它们。这就是我所看到的:s3压缩 - >在电线上 - >给我作为JS Buffer - > ???

我不确定接下来我能做些什么。我似乎已经尝试了所有的东西,比如pako和lzutf8来解压缩字符串,但没有骰子。

这是对lzutf8的尝试:

lzutf8.decompress(buffer,{outputEncoding: "String"}, (result, error) => {
    if (err) console.log(err);
    if (data) console.log(data);
});

以下是pako的尝试:

pako.ungzip(buffer,{to: "string"}, (result, error) => {
    if (error) console.log(err);
    if (result) console.log(data);
})
pako抛出一个"错误的标题检查",并且lzutf8默默无效。

我没有和这些图书馆结婚,所以如果还有其他任何工作,我很乐意尝试任何事情。我猜我的问题可能与编码类型有关?但不确定。

以下是我的代码的相关部分:

let pako = require('pako');
let streamBuffers = require('stream-buffers');


let ws = fs.createWriteStream(process.cwd() + 'path-to-file');
let rs = new streamBuffers.ReadableStreamBuffer();
objects.forEach((obj) => {
    console.log(obj);
    rs.on("data", (data) => {
        ws.write(pako.ungzip);
    })
    rs.push(obj);
})

1 个答案:

答案 0 :(得分:0)

您可以使用AWS SDK的createReadStream method从S3中的对象创建可读流,然后通过zlib.Gunzip transform stream管道:

bits 32
section .text
;grub bootloader header
        align 4
        dd 0x1BADB002            ;magic
        dd 0x00                  ;flags
        dd - (0x1BADB002 + 0x00) ;checksum. m+f+c should be zero

global start
extern kernel_main

start:
  mov esp, stack_space  ;set stack pointer
  call kernel_main

; We shouldn't get to here, but just in case do an infinite loop
endloop:
  hlt           ;halt the CPU
  jmp endloop

section .bss
resb 8192       ;8KB for stack
stack_space: