2017-12-28 14 views
0

私はブースターを使用して私のサーバーでmultipart/form-dataを解析しています。私は自動的に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] 
    }) 
    }) 
関連する問題