【问题标题】:How can I parse form-data in plain Javascript?如何用纯 Javascript 解析表单数据?
【发布时间】:2020-07-26 08:57:34
【问题描述】:

我正在尝试在 Node.js 中创建一个简单的图像主机,但我无法解析表单数据

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

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

<binary PNG data...>

----------------------8d8317fa35f1280--

我计划将图像数据存储在键值数据库中,其中键是文件的 md5 哈希,值是原始 .png 数据。

我知道使用 'express' javascript 框架非常有可能,但我不希望使用任何框架,我愿意使用库,因为它速度很快。

我想避免使用正则表达式

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

【问题讨论】:

    标签: javascript node.js forms


    【解决方案1】:

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

    multer 中的示例,

    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 的 originalname 属性,要读取文件,您需要读取文件 req.file.path这是实际的文件

    【讨论】:

    • 你为什么推荐 multer 而不是强大的?有什么区别
    • multer 为您提供了您可以使用的中间件功能,您将在请求对象本身中获取文件对象。 Formidable 解析您作为输入传递的表单数据。中间件更干净,易于使用和维护。 multer 还为您提供了在实际保存文件之前设置路径、文件名和其他属性的选项。
    猜你喜欢
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多