Реагировать на собственный POST "множественные данные формы 500" ошибка сервера - PullRequest
0 голосов
/ 29 сентября 2019

Когда я пытаюсь POST-образ на свой сервер Node / Express (развернутый на Heroku), я получаю ошибку сервера 500.

POSTing через Postman работает просто отлично.

Здесьмой код React Native:

upload = async uri => {
  const formData = new FormData();

  formData.append("photo", {
    uri,
    name: `photo`,
    type: `image/jpg`
  });

  const options = {
    method: "POST",
    body: formData,
    headers: {
      "Content-Type": "multipart/form-data"
    }
  };

  axios
    .post("https://prezzi-api.herokuapp.com/upload", formData, options)
    .then(response => {
      console.warn(response.data);
    })
    .catch(error => {
      console.warn("error uploading to OCR", error);
    });
};

Мой маршрут Express выглядит следующим образом:

router.post(
  "/",
  multer.single("image"),
  gcsMiddlewares.sendUploadToGCS,
  (req, res, next) => {
    console.log("post");
    if (req.file && req.file.gcsUrl) {
      return res.send(req.file.gcsUrl);
    }

    return res.status(500).send("Unable to upload");
  }
);

Файл console.log в моем маршруте НЕ срабатывает, когда я не использую Postman.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Я очень внимательно посмотрел на объект res в моем маршруте Express, чтобы увидеть различия между тем, что работает, а что нет, и вот что в итоге получилось из приложения React Native:

      uploadToOCR = async uri => {
       const formData = new FormData();

       formData.append("image", {
         uri,
         name: "photo.jpg",
         type: "image/jpg",
         headers: {
           Accept: "application/json",
           "Content-Type": "multipart/form-data"
         }
       });

    const options = {
      method: "POST",
      body: formData
    };

    try {
      const response = await fetch(
        "https://prezzi-api.herokuapp.com/upload",
        options
      );
      if (response) {
        // const json = await response.json();
        // console.warn("json", json);
        console.warn("response", response);
      }
    } catch (error) {
      console.warn("error uploading to OCR", error);
    }
 };
0 голосов
/ 29 сентября 2019
  1. написать console.log ({uri}) внутри функции загрузки, чтобы узнать, в каком формате вы получаете uri
  2. удалить тело из опций
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...