eggjs 接收不到 ctx.multipart(),怀疑是前端代码参数有问题,但是网上找了很多参数的写法,都接收不到,不知道该怎么写了。
前端代码:
// electron nodejs 环境,根据文件路径,把文件上传到服务器(静默上传)
const FormData = require("form-data");
let data = new FormData();
data.append("file1", fs.createReadStream("D:\\111.tx"), "111.tx");
data.append("file2", fs.createReadStream("D:\\222.tx"), "222.tx");
Axios.post("/api/uploadFile", data, {
  headers: {
    "x-csrf-token": Util.GetCookie("csrfToken"),
    "Content-Type": `multipart/form-data; boundary=${data._boundary}`,
  },
});eggjs代码:
// 处理 /api/uploadFile ,参数是controller传递过来的 this.ctx
static UpLoadFile(ctx: any) {
  const parts = ctx.multipart();   // 此处接收不到parts
  let part;
  while ((part = await parts()) != null) {
    if (part.length) {
      // 这是 busboy 的字段
      console.log('field: ' + part[0]);
      console.log('value: ' + part[1]);
      console.log('valueTruncated: ' + part[2]);
      console.log('fieldnameTruncated: ' + part[3]);
    } else {
      // 这时是用户没有选择文件就点击了上传(part 是 file stream,但是 part.filename 为空)
      // 需要做出处理,例如给出错误提示消息
      if (!part.filename) throw "上传参数不对";
      // // part 是上传的文件流
      // console.log('field: ' + part.fieldname);
      // console.log('filename: ' + part.filename);
      // console.log('encoding: ' + part.encoding);
      // console.log('mime: ' + part.mime);
      // 文件处理,上传到云存储等等
    }
  }
}要实现的功能:electron 检测到本地文件有变更后,直接把文件上传到服务器