Egg.js获取formData数据

使用React进行post的请求时,Eggjs获取formData的数据

方法1:

使用formidable进行转换

// add()
const extraParams = await this.parse(this.ctx.req);
const {
      title,
      type,
      country,
      year,
      score,
      time
    } = extraParams && extraParams.fields;

// parse()
async parse(req) {
    const form = new formidable.IncomingForm();
    return new Promise((resolve, reject) => {
      form.parse(req, (err, fields, files) => {
        resolve({ fields, files });
      });
    });
  }

方法2:

使用multipart (获取数据,上传的(多个)文件)

async add() {
    const { ctx } = this;
    const { req } = ctx;
    // const stream = await this.ctx.getFileStream();单个文件使用
    const parts = ctx.multipart();
    let part;
    while ((part = await parts()) != null) {
      if (part.length) {
        console.log("field: " + part[0]);
        console.log("value: " + part[1]);
      } else {
        if (!part.filename) {
          continue;
        }
        console.log("field: " + part.fieldname);
        console.log("filename: " + part.filename);
        console.log("encoding: " + part.encoding);
        console.log("mime: " + part.mime);

        const writePath = path.resolve(
          "./src/",
          `${new Date().getTime() + part.filename}`
        );
        console.log(writePath);
        if (!fs.existsSync(writePath)) {
          fs.writeFileSync(writePath, "");
        }
        const writeStream = fs.createWriteStream(writePath);
        await part.pipe(writeStream);
      }
    }

    ctx.body = { status: "ok" };
  }

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在这段代码中,使用了FormData对象来创建一个表单数据对象FormData对象可以用来将表单数据序列化成键值对,以便通过AJAX发送到服务器。在这段代码中,通过document.getElementById("upfile")获取到了id为"upfile"的表单元素,然后使用FormData的append方法将表单数据添加到FormData对象中。接着,通过$.ajax方法发送了一个POST请求到"controller/shopcar.php"的URL,并将FormData对象作为请求数据发送到服务器。在成功回调函数中,根据服务器返回的结果进行相应的处理。如果返回的结果的state属性为"ok",则弹出"提交成功!"的提示,并跳转到"seeFood.html?id="+id的URL;否则,弹出"提交失败!"的提示。如果FormData对象中没有数据,则会弹出"请先选择"的提示。 根据你的问题,你提到了new FormData(document.getElementById())和formData.append,但是没有提供具体的数据。请提供具体的数据,以便我能够更好地回答你的问题。 #### 引用[.reference_title] - *1* [前端关于FormData(document.getElementById("upfile"))例子](https://blog.csdn.net/xiao_qing_ge/article/details/103294433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值