Как загрузить изображение в хранилище Firebase, а затем вернуть URL-адрес загрузки? - PullRequest
1 голос
/ 25 января 2020

Я пытаюсь загрузить изображение в хранилище Firebase в реактивном проекте, а затем вернуть URL-адрес для загрузки после завершения загрузки.

это то, что я пытался: EDITED:

const uploadImg = async (dispatch, uri, uid, mime = 'image/png') => {
    console.log('Starting image upload...');

    dispatch({ type: types.UPLOAD_IMG, info: 'Uploading profile image...' });
    const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;

    return (imageRef = firebase
        .storage()
        .ref(uid)
        .child('profileImg')
        .putFile(uploadUri, { contentType: 'image/png' })
        .catch((err) => {
            uploadImgFail(dispatch, err.message);
        }));
};

часть реализации:

uploadImg(dispatch, img, userCredential.user.uid)
    .then((imgRef) => {
        const imgUrl = imgRef.getDownloadURL();
        console.log('uploaded Image URL: ' + imgUrl)
        uploadImgSuccess(dispatch, 'Profile image upload successful...');
        // rest of action
}

проблема в том, что функция не возвращает URL загрузки, я получаю необработанное отклонение обещания: "не могу найти переменную: imgUrl"

Любая помощь в достижении этого с react-native-firebase?

1 Ответ

3 голосов
/ 25 января 2020

Вам нужно будет на самом деле вернуть значение из uploadImg. Прямо сейчас это ничего не возвращает. Добавьте ключевое слово return перед imageRef.putFile(), чтобы вернуть обещание, которое возвращает его связанное обещание.

...