Тип контента по умолчанию не заменяется новым типом контента (данные формы) в аксиомах в собственном приложении для загрузки изображения

Я хочу загрузить изображение с аксиомами в React Native. Это моя функция, которая вызывает api веб-службы загрузки изображений:

function _uploadImgToServer(item) {

        const file = {
            uri: item.imgData.path,
            type: item.imgData.mime,
            name: 'ana' + item.imgId
        }
        const body = new FormData();
        body.append('file', file);
        console.info('uploadResult saga0', body)
        dispatch(uploadImg({ body: JSON.stringify(body)}))
    } 

это моя конфигурация axios:

const instance = axios.create({
        baseURL: '****',
        responseType: 'json',
        timeout: 10000,
        headers: {
            'WEB_TOKEN': '*****',
            'UNIQUE_ID': '*****',
            'UNIQUE_KEY': '*****',
             Accept: "application/json",
            'Content-Type':  "multipart/form-data"
        },
    });

И я вызываю свой веб-сервис, как показано ниже:

try {
    const response = await instance.post(url, data);
    return Promise.resolve(response.data);
} catch (error) {
    return Promise.reject(error.response);
}

Часть ответа, который я получаю в последней части:

'My log result' { data: { Code: 3, Message: 'Invalid Entry', Value: null },
  status: 200,
  statusText: undefined,
  headers: 
   {
    ...

     'content-type': 'application/json; charset=utf-8',

    ...

   },
  config: 
   { url: 'upload',
     method: 'post',
     data: '{"_parts":[[{"uri":"file:///data/data/***packageName***/cache/react-native-image-crop-picker/IMG-20201222-WA0017.jpg","type":"image/jpeg","name":"ana_pu8kweg4e"},null]]}',
     headers: 
      { Accept: 'application/json',
        'Content-Type': 'multipart/form-data',
        WEB_TOKEN: '*****',
        UNIQUE_ID: '****',
        UNIQUE_KEY: '****' },
     baseURL: '****',
     transformRequest: [ [Function: transformRequest] ],
     transformResponse: [ [Function: transformResponse] ],
     timeout: 10000,
     adapter: [Function: xhrAdapter],
     responseType: 'json',
     xsrfCookieName: 'XSRF-TOKEN',
     xsrfHeaderName: 'X-XSRF-TOKEN',
     maxContentLength: -1,
     maxBodyLength: -1,
     validateStatus: [Function: validateStatus] },

 ...
}

Как вы видите в моем журнале, тип содержимого в заголовке, который я отправил, — «multipart/form-data», но сервер получил «application/json; charset=utf-8', поэтому я не могу загрузить свое изображение. Стоит отметить, что если я не использую JSON.stringify, то content-type вообще не будет отправлен. Я много искал, но не нашел полезного ответа.

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
0
1 319
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я обнаружил, что моя проблема вовсе не в «типе контента». Мне пришлось указать тип изображения в конце имени изображения.

const file = {
            uri: item.imgData.path,
            type: item.imgData.mime,
            name: 'ana'+item.imgId+'.jpeg'
        }

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

У меня была такая же проблема, я отправляю файл без имени файла, и это решило мою проблему. :)

Keigo Igarashi 03.09.2021 17:15

Другие вопросы по теме