我正在使用 nodejs 和 express4。我有一个表单发布方法(文件上传为base64),我将此文件保存到带有流的gridfs。
这是我的代码:
exports.transcribe = function (gridfs, req, res) {
const buffer = Buffer.from(req.body.file.split(';base64,')[1], 'base64')
let contentType = req.body.file.split(';base64,')[0].replace('data:', '')
streamifier.createReadStream(buffer).pipe(gridfs.createWriteStream({
filename: uuid.v4() + '.txt',
content_type: contentType,
metadata: {
user: req.user
}
}))
// this is request-promise-native
request.post({
headers: {
'Content-Type': 'multipart/form-data'
},
uri: process.env.REST_ENDPOINT,
// stream is created with streamifier from a buffer object
formData: {'file': streamifier.createReadStream(buffer)}
}).then(console.log).catch(console.error)
res.status(200).json({file: file, user: req.user})
}
该代码在同步执行时有效,但不在请求处理中。
我读到可能在我能够发送它之前取消了流。缺少的是文件的内容。请求本身被执行。