我正在尝试从请求(在本例中为POST
)中提取数据,并且遇到了麻烦。我正在使用该body-parser
模块。以下是我的代码的一部分(请注意,我正在使用ES6语法):
let bodyParser = require('body-parser')
var urlEncodedParser = bodyParser.urlEncoded({extended: true})
app.post('*', setFileMeta, setDirDetails, urlEncodedParser, (req, res, next) => {
async ()=> {
if (!req.stat) return res.send(405, 'File does not exist')
if (req.isDir) return res.send(405, 'Path is a directory') // This is an advanced case
await fs.promise.truncate(req.filePath, 0)
req.pipe(fs.createWriteStream(req.filePath)) // Filepath is a file
// This below line is where I need the body
sendToClients('update', req.url, 'file', req.body, Date.now())
res.end()
}().catch(next)
})
对于使用数据的实际提取body-parser
,urlEncoded
是我是能够成功地做到这一点(的数据只是一个字符串现在)的唯一途径,而它给我的格式{content: ''}
,其中内容是我用实际的字符串。这不是理想的方法,但是它很简单。但是,这破坏了createWriteStream(req.filePath)
上面看到的内容-创建了文件,但是没有内容。
由于我是Node and Express的新手,所以肯定有一些明显的错误提示,我做错了。由于我大部分是通过教学视频编写的,因此我的直觉告诉我这是身体提取的一部分,因为我是自己做的。
body-parser
耗尽(完全读取)请求流以解析传入的参数,因此请求流中没有剩余数据可写入您的文件。
在我看来,您正在尝试实现文件上传。在这种情况下,您可能想要使用multer
而不是的模块body-parser
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句