我正在使用Busboy在我的服务器中解析multipart / form-data,我想将每个文件存储在Buffer中而不自动转换为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 :(得分:1)
您可以将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]
})
})