React Native — отправка FormDate в C # API

#c# #reactjs #react-native

#c# #reactjs #react-native

Вопрос:

Я пытаюсь отправить две части информации из моего приложения React Native в мой C # API.

Мне просто нужно отправить идентификатор пользователя вместе с изображением. Если я использую form-data в PostMan, информация успешно поступает в API, и все работает отлично. Отправка данных через React Native — вот где я сталкиваюсь с проблемами.

Он не получает идентификатор пользователя. Я отправляю значение 2, но к тому времени, когда я получаю его в API, оно равно 0.

Собственный код реакции (фрагмент): (Api является экземпляром Axios)

         Api.defaults.headers.common['Content-Type'] = 'multipart/form-data'

        var name = userId   '.jpg'
        let formData = new FormData()

        formData.append('userId', userId)
        formData.append('profilePicture', {
            uri:
                Platform.OS === 'android'
                    ? profilePicture.uri
                    : profilePicture.uri.replace('file://', ''),
            name: name,
            type: 'image/jpg',
        })

        const response = await Api.patch('/User/SaveProfilePictureUri', {
            formData,
        })
  

C # код (фрагмент):

         [HttpPatch]
        [Route("SaveProfilePictureUri")]
        public async Task<bool> SaveProfilePictureUri([FromForm(Name = "userId")] int userId, [FromForm(Name = "profilePicture")] IFormFile profilePicture)
        {
            Request.Headers.TryGetValue("Requestor", out var requester);
            _securityService.ValidRequester(requester);
            Request.Headers.TryGetValue("JwtToken", out var jwtToken);
            _securityService.CheckAuthentication(userId, jwtToken);

            return await _userService.SaveProfilePictureUri(userId, profilePicture);
        }
  

Что еще я могу попробовать?

Ответ №1:

В конце концов я понял это.

Мне нужно было удалить фигурные скобки вокруг FormData при вызове API. :facepalm:

От:

 const response = await Api.patch('/User/SaveProfilePictureUri', {
            formData,
        })
  

Для:

 const response = await Api.patch('/User/SaveProfilePictureUri', formData)