ReactNative:当我使用文件发出http请求时,FormData()的变量在ReactNative应用程序中被记录为未定义

时间:2019-02-21 15:30:08

标签: node.js express react-native multipartform-data

我一直试图在Android模拟器上通过我的React Native应用发出发布请求,但是我在请求正文中发送的对象被vvalue赋值为undefined,因此试图解决这个问题但没有成功。请帮助我

这是我应用程序中窗体的代码,称为“ API.js”,其名称仅用于测试API端点

const express = require("express");
const router = express.Router();
const bodyParser = require("body-parser");
const path = require("path");
const cloudinary = require("cloudinary");
const mongoose = require("mongoose");

//Product Model

const product = require("../models/product").product;
router.use(bodyParser.json());

//GET route

router.get("/", (req, res) => {
  product.find().then(product => res.json(product));
});

// POST route
cloudinary.config({
  cloud_name: "cloud222",
  api_key: "783935981748815",
  api_secret: "uY47vBS1rI2x5jvFtnXQIjMMqU0"
});

router.post("/", (req, res) => {
  //MISC//
  let imageUrl;
  console.log("starting");
  //MISC//

  //CLOUDINARY UPLOAD
  cloudinary.v2.uploader.upload(req.body.image, (error, result) => {
    if (error) {
      console.log(error);
      console.log(`${req.body.image}`);
    } else {
      imageUrl = result.secure_url;
      //MONGO UPLOAD
      var productv = {
        name: req.body.name,
        price: req.body.price,
        size: req.body.size,
        description: req.body.description,
        image: imageUrl,
        popularity: req.body.popularity
      };
      const productvar = new product(productv);
      productvar
        .save()
        .then(product => console.log(product))
        .then(product => res.json(product))
        .catch(err => console.log(err));
    }
  });

  //END//
});

module.exports = router;

这是我的后端路由“ product.js”的代码,该代码可以接收请求(node.js和express)

{{1}}

数据被记录为未定义状态,因此请求没有得到响应

2 个答案:

答案 0 :(得分:0)

我认为问题在于您已经创建了一个FormData并希望将其发布,但是添加的标头是“ application / json”。您应该更改它:

 headers: {
         'content-type': 'multipart/form-data',
         'Accept':'multipart/form-data',
      },

希望它对您有用。

答案 1 :(得分:0)

问题解决了

由于onChange不会返回字符串,因此不得不使用onChangeText =而不是onChange