首页 > 解决方案 > 我如何在不使用任何节点模块的情况下处理多部分表单数据

问题描述

我正在尝试使用 POST 请求将图像文件提交到服务器,在前端获取请求的主体中,我将主体添加为 FormData,如下所示

let formdata = new FormData(form)
async function finalFetch(formdata){
  let postReq = await fetch('/api/fileupload', {method : 'POST', body : formdata})
  let result = await postReq.json()
  return result.url;
}

现在在后端提交此表单时,我正在处理这样的数据

  req.on('data', (chunk)=>{
       console.log(chunk);
  })
  req.on('end', ()=>{
        // pseudo code, this will get replaced by something else
       res.write(JSON.stringify({
           msg : 'File Upload done',
           url : '/232'
  }));
      res.end();
 })

上面的实现给了我一个Buffer,我不知道如何在服务器中从这个缓冲区写入文件

我知道有很多模块可以处理 multer、express、formidable 等形式,但我不想使用它们中的任何一个,我试图了解这些包是如何工作的。我只是使用核心节点js。

标签: javascriptnode.jsmultipartform-dataform-submit

解决方案


缓冲区完全接收后,您应该使用核心节点模块“fs”将 buf 写入文件。

const fs = require('fs');
fs.writeFile('file.name', buffer);

请参阅文档fs.writeFile


推荐阅读