Возникли проблемы с загрузкой изображений с использованием данных формы и получения - PullRequest
0 голосов
/ 12 июня 2019

У меня есть приложение React Native, которое использует fetch для загрузки некоторых текстовых данных и изображений. Недавно мы заметили, что не все изображения сохраняются на сервере. Разжигая Чарльза, я обнаружил, что некоторые изображения выглядят искаженными, точно не зная, почему или чем это вызвано.

В ходе тестирования я пробовал разные изображения, одно и то же изображение и т. Д., И, похоже, эта проблема все еще существует. На скриншоте ниже вы можете увидеть запрос и то, как только одно изображение имеет правильные данные. Я не уверен, что означают эти символы или почему они там ..

Charles response

Как вы можете видеть в коде, я добавляю оба изображения одинаково точно ...

// data is my object that contains job info, image meta info, etc..
const formData = new FormData();
formData.append("sc", JSON.stringify(data));

// append call images
data.SavedImages.forEach(image => {
  if (image.meta && image.meta.uri) {
    formData.append(`image_sc_${image.ImageID}`, {
      uri: image.meta.uri,
      type: "image/jpeg",
      name: data.CallID
    });
  }
});

//append equip images
data.Equip.forEach(e => {
  e.SavedImages.forEach(image => {
    if (image.meta && image.meta.uri) {
      formData.append(`image_equip_${image.ImageID}`, {
        uri: image.meta.uri,
        type: "image/jpeg",
        name: image.EquipmentID
      });
    }
  });
});


return fetch(Api.buildURL("ServiceCallPayload"), {
  method: "POST",
  body: formData
})

Я ожидаю, что изображения будут включены в запрос и в правильном формате, но вместо этого они каким-то образом повреждены.

1 Ответ

0 голосов
/ 12 июня 2019

Мой коллега понял это, свойство name должно иметь правильное расширение файла, в противном случае оно трактовалось как текст.

// append call images
data.SavedImages.forEach(image => {
  if (image.meta && image.meta.uri) {
    formData.append(`image_sc_${image.ImageID}`, {
      uri: image.meta.uri,
      type: "image/jpeg",
      name: data.CallID + '.jpeg'
    });
  }
});
...