Невозможно изменить изображение профиля через JSON API с помощью React-Native - PullRequest
0 голосов
/ 03 мая 2020

Я новичок в React-Native. Я пытаюсь загрузить профиль пользователя и могу изменить изображение через ImagePacker, но не могу загрузить изображение на сервер через JSON API. После изменения изображения я получаю предупреждение json "Не удается прочитать свойство 'путь' из неопределенного". Вот мой код Пожалуйста, проверьте.

   selectPhotoTapped= async () => {
     const options = {
      quality: 1.0,
      maxWidth: 500,
      maxHeight: 500,
    };

    ImagePicker.showImagePicker(options, (response) => {
      console.log('Response = ', response);

      if (response.didCancel) {
        console.log('User cancelled photo picker');
      }
      else if (response.error) {
        console.log('ImagePicker Error: ', response.error);
      }
      else if (response.customButton) {
        console.log('User tapped custom button: ', response.customButton);
      }
      else {
        let source = { uri: response.uri };

        this.setState({       
          ImageSource : source,                 
        });
        this.postimage()
      }
    });
  }


   postimage = async() => {

        const createFormData = (photo) => {
        const data = new FormData();

        data.append("photograph", {
          name: "photo.jpeg",
          type: "image/jpeg",
          uri:
            Platform.OS === "android" ? photo.uri : photo.uri.replace("file://", "")
        });             
      }; 

    try {
        const DEMO_TOKEN = await AsyncStorage.getItem('isLoggedIn');
        if (DEMO_TOKEN != null) {
            console.log('Token', DEMO_TOKEN);
            fetch('http://104.197.28.169:3000/profilePicChange', {
              method: 'POST',
                headers: {
                  'Accept': 'application/json',
                 'Content-Type': 'application/json',
                Authorization: 'Bearer ' + DEMO_TOKEN,
                },
                body : createFormData(this.state.ImageSource)                     
            })
                .then(response => response.json())
                .then(responseJson => {
                    //Success
                    alert(responseJson.message);
                    console.log(responseJson);                   
                });
        }
    } catch (error) {
        alert(JSON.stringify(error));
        console.error(error);
    }
   }   

      <TouchableOpacity   onPress={this.selectPhotoTapped.bind(this)} >                         
                                     {this.state.ImageSource === null ? <Image style= 
                                     {{height:100,width:100,borderRadius:50}}
                                     source={require('./images/default-profile.jpg')}></Image>  
                                       :
                                <Image style={{height:100,width:100,borderRadius:50}}
                               source={this.state.ImageSource} />   }                                                                                                
                 </TouchableOpacity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...