多文件和单文件上传

参考文章多文件上传node包装接口分享_BUG不加糖的博客-CSDN博客_node 上传文件接口

问题:使用formdata去添加参数,一个参数上传一个文件,一个参数上传多个文件。关于文件的存储传递,后端接口的封装(觉得有必要现在就写篇文章来记录)上代码!!

方法一:

woody_mywlGo.post("/applyStore", mult, (req, res) => {
  let formData = new FormData();
  formData.append("userId", JSON.parse(req.session.user).id);
  formData.append("brand", req.body.brand);
  formData.append("storeIntroduce", req.body.storeIntroduce);
  formData.append("storeName", req.body.storeName);
  formData.append("storeStyle", req.body.storeStyle);
  for (key in req.files) {
    formData.append(key.split('_')[0],fs.createReadStream(req.files[key].path))
  }
  axios({
    method: "post",
    url: "http://110.40.212.128:8081/shop/storeApply/add",
    data: formData,
    headers: {
      formData: formData.getHeaders(),
      maxBodyLength: 1000000000,
    },
  })
    .then((str) => {
      res.send({ err: 0, msg: str.data });
    })
    .catch((err) => {
      res.send({ err: -1, msg: err });
    });
});

方法二:

woody_mywlGo.post("/applyStore", mult, (req, res) => {
  let formData = new FormData();
  formData.append("userId", JSON.parse(req.session.user).id);
  formData.append("brand", req.body.brand);
  formData.append("storeIntroduce", req.body.storeIntroduce);
  formData.append("storeName", req.body.storeName);
  formData.append("storeStyle", req.body.storeStyle);
  for (key in req.files) {
    if (req.files[key].length) {
      for (let i = 0; i < req.files[key].length; i++) {
        formData.append(
          req.files[key][i].fieldName,
          fs.createReadStream(req.files[key][i].path)
        );
      }
    } else {
      formData.append(key, fs.createReadStream(req.files[key].path));
    }
  }
  axios({
    method: "post",
    url: "http://110.40.212.128:8081/shop/storeApply/add",
    data: formData,
    headers: {
      formData: formData.getHeaders(),
      maxBodyLength: 1000000000,
    },
  })
    .then((str) => {
      res.send({ err: 0, msg: str.data });
    })
    .catch((err) => {
      res.send({ err: -1, msg: err });
    });
});

 这两种方法对应的前端的js代码,不同的是,上传对象的存储模式

方法一:

var formdataStore = new FormData();
addStore.addEventListener("click", function () {
  addOPen.style.display = "block";
});
store_data.addEventListener("change", function () {
  for (let i in store_data.files) {
    formdataStore.append(`data_${i}`, store_data.files[i]);
  }
});

方法二:

var formdataStore = new FormData();
addStore.addEventListener("click", function () {
  addOPen.style.display = "block";
});
store_data.addEventListener("change", function () {
  for (let i in store_data.files) {
    formdataStore.append(`data`, store_data.files[i]);
  }
});

 选择其中任意一种都可以实现单文件和多文件一起上传的功能了!下班! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值