2017-12-28 47 views
0

나는 내 서버에서 multipart/form-data를 분석하기 위해 Busboy를 사용하고 있으며 utf8로 자동 변환하지 않고 각 파일을 버퍼에 저장하려고합니다. 가능한가? 데이터를 받고이를 바이너리로 보관하려면 어떻게해야합니까?

const result = { files: [] } 

    const busboy = new Busboy({ 
    headers: req.headers 
    }) 

    busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { 
    const temp = {} 

    file.on('data', (data) => { 
     temp.file += data 
    }) 

    file.on('end',() => { 
     temp.filename = filename 
     temp.contentType = mimetype 
     result.files = [...result.files, temp] 
    }) 
    }) 

    busboy.on('field', (fieldname, value) => { 
    result[fieldname] = value 
    }) 

    busboy.on('error', (error) => { 
    console.error(error) 
    }) 

는 현재 file.on('data')는 작업 +=가 자동으로 UTF8로 버퍼를 변환 때문에 정보를 잃어버린하고있어, 제대로 작동하지 않습니다.

답변

0

문자열 대신 temp.file을 배열로 지정하고 끝에 concat the buffer array을 설정할 수 있습니다.

busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { 
    const temp = {file: []} 

    file.on('data', (data) => { 
     temp.file.push(data) 
    }) 

    file.on('end',() => { 
     temp.file = Buffer.concat(temp.file) 
     temp.filename = filename 
     temp.contentType = mimetype 
     result.files = [...result.files, temp] 
    }) 
    })