Как сохранить картинку в API, чтобы реагировать нативно с Expo? - PullRequest
0 голосов
/ 25 октября 2018

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

Я попробовал учебник в следующем фрагменте.

  _takePhoto = async () => {
    const {
      status: cameraPerm
    } = await Permissions.askAsync(Permissions.CAMERA);

    const {
      status: cameraRollPerm
    } = await Permissions.askAsync(Permissions.CAMERA_ROLL);

    if (cameraPerm === 'granted' && cameraRollPerm === 'granted') {
      let pickerResult = await ImagePicker.launchCameraAsync({
        allowsEditing: true,
        aspect: [4, 3],
      });

      this._handleImagePicked(pickerResult);
    }
  };

_pickImage = async () => {
    const {
      status: cameraRollPerm
    } = await Permissions.askAsync(Permissions.CAMERA_ROLL);


    if (cameraRollPerm === 'granted') {
      let pickerResult = await ImagePicker.launchImageLibraryAsync({
        allowsEditing: true,
        aspect: [4, 3],
      });

      this._handleImagePicked(pickerResult);
    }
  };

  _handleImagePicked = async pickerResult => {
    let uploadResponse, uploadResult;

    try {
      this.setState({
        uploading: true,
      });

      if (!pickerResult.cancelled) {
        uploadResponse = await uploadImageAsync(pickerResult.uri);
        uploadResult = await uploadResponse.json();

        this.setState({
          picture_profile: uploadResult.location
        });
      }
  }
    catch (e) {
      console.log({ uploadResponse });
      console.log({ uploadResult });
      console.log({ e });
      Alert.alert('Upload failed, sorry :(');
    } finally {
      this.setState({
        uploading: false,
      });
    }
  };


async function uploadImageAsync(uri){
    let apiUrl= `someURL`;
    let uriParts = uri.split('.');
    let fileType = uriParts[uriParts.length - 1];
    let formData = new FormData();
    formData.append('photo', {
        uri,
        name:`photo.${fileType}`,
        type: `picture_profile/${fileType}`,
    });
    //update_password
    let option ={
        method: 'POST',
        body: formData,
        headers: {
            Authorization: token,
            'content-type': 'multipart/form-data',
        },
    };
    return fetch(apiUrl, option);
}

Но мне не удалось сохранить изображение в API.Также я получаю это сообщение об ошибке при попытке загрузить изображение.

Возможное необработанное отклонение обещания (id: 2): TypeError this._handleImagePicked не является функцией

Может кто-нибудь помочь мне, что делать?Заранее спасибо.

...