2016-10-16 3 views
1

파일을 압축하여 AWS S3에 바이너리 출력을 바로 덤프하고 싶습니다. 먼저 작동하지 않는 로컬 ZIP 파일에 쓸 수 있는지 확인하여 코드를 테스트하고 있습니다.zip에서 S3로 Node.js 바이너리 스트림을 쓰는 방법

function zipFiles(filenames) { 
    return new Promise((resolve, reject) => { 
    const child = spawn(zipCmd, ['-'].concat(filenames)); 
    let buffer = ''; 

    child.stdout.on('data', (data) => { 
     buffer += data.toString(); 
    }); 

    child.stderr.on('data', (data) => { 
     // console.error(data.toString()); 
    }); 

    child.on('close', (code) => { 
     fs.writeFileSync('testing.zip', buffer); 
     resolve(code); 
    }); 
    }); 
} 

결과로 압축 된 zip 파일이 생성됩니다. 난 정말 어떻게 버퍼 스트림을 spawn에서 처리하고 s3.putObject 및 (테스트 방법으로) fs.writeFileSync 함께 작동합니다 뭔가 조립하십시오.

답변

0

알 수 있습니다.

function zipFiles(filenames) { 
    return new Promise((resolve, reject) => { 
    const out = fs.openSync('testing.zip', 'a'); 
    const child = spawn(zipCmd, ['-'].concat(filenames)); 
    let buffer = new Buffer(''); 

    child.stdout.on('data', (data) => { 
     buffer = Buffer.concat([buffer, data]); 
    }); 

    child.stderr.on('data', (data) => { 
     // console.error(data.toString()); 
    }); 

    child.on('close', (code) => { 
     fs.writeFileSync('testing.zip', buffer); 
     resolve(code); 
    }); 
    }); 
} 
관련 문제