gpt4 book ai didi

javascript - nodejs - 请求 - 表达 - 在后处理程序中使用文件 readStream

转载 作者:行者123 更新时间:2023-12-03 23:51:07 26 4
gpt4 key购买 nike

我正在使用 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})
}

代码在同步执行时有效,但不在请求处理中。

我读到可能在我能够发送之前流被取消了。缺少的是文件的内容。请求本身被执行。

最佳答案

好的,我能够解决这个问题。我不再使用流:

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
}
}))
request.post(process.env.REST_ENDPOINT, {
headers: {
'Content-Type': 'multipart/form-data'
},
formData: {
'file': {
value: buffer,
options: {
filename: 'transcribeme.txt',
contentType: contentType
}
}
}
}).then((data) => {
console.log(data)
res.status(200).json({user: req.user})
}).catch((err) => {
console.error(err)
res.status(500).json({user: req.user})
})

}

关于javascript - nodejs - 请求 - 表达 - 在后处理程序中使用文件 readStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50024880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com