如何在纯Javascript中解析表单数据?

如何在纯Javascript中解析表单数据?,javascript,node.js,forms,Javascript,Node.js,Forms,我试图在Node.js中创建一个简单的映像主机,但在解析表单数据时遇到了问题 我的测试应用程序生成的表单(用于上传图像)以以下格式发布数据: ----------------------8d8317fa35f1280 Content-Disposition: form-data; name="ImageUploader"; filename="Test.png" Content-Type: image/png <binary PNG data...

我试图在Node.js中创建一个简单的映像主机,但在解析表单数据时遇到了问题

我的测试应用程序生成的表单(用于上传图像)以以下格式发布数据:

----------------------8d8317fa35f1280
Content-Disposition: form-data; name="ImageUploader"; filename="Test.png"
Content-Type: image/png

<binary PNG data...>

----------------------8d8317fa35f1280--
-------------------------8d8317fa35f1280
内容配置:表单数据;name=“ImageUploader”;filename=“Test.png”
内容类型:图像/png
----------------------8d8317fa35f1280--
我计划将图像数据存储在键值数据库中,其中键是文件的md5散列,值是raw.png数据

我知道这在“express”javascript框架中是非常可能的,但我不希望使用任何框架,我愿意使用库,因为它速度很快

我想避免使用正则表达式


如何解析此表单提交数据中的文件名和原始.png数据?

您需要使用库来解析此类数据。是一个例子,但我建议使用

以穆特为例

const multer = require('multer');
const upload = multer({dest:'temp/'}) // path to a temporary folder where files will be saved

app.post('/upload', upload.single('file'), (req,res)=>{ // use middleware
    // process file here
    // file will be in req.file
})
这是一个非常简单的例子,但是multer提供了非常广泛的上传方法,您应该检查这些方法


有关获取文件名的信息,请参见req.file的原始名称属性,有关读取文件的信息,您需要读取文件req.file.path哪一个是实际文件

为什么建议使用multer而不是其他文件?区别是什么Multer为您提供了中间件功能,您可以在请求对象本身中获取这些功能。解析作为输入传递的表单数据。中间产品更干净,易于使用和维护。multer还为您提供了在实际保存文件之前设置路径、文件名和其他属性的选项。