Base64图片上传可用于某些图片,其他图片会损坏

时间:2019-12-13 13:57:33

标签: javascript firebase react-native firebase-storage image-uploading

所以我有此图像上传功能。有了IOS模拟器上已经可用的默认图片和我从Google图片下载的一张图片,它可以完美运行。 但是,我下载的其他图像或在使用相机拍摄的android仿真器上的图像将被上传。但是,在线Firebase控制台中的图像无效。 当我console.log照片阵列时,图像的信息看起来都一样。

选择带有react-native-image-crop-picker的图像

onPressButton = () => {
    ImagePicker.openPicker({
        multiple: true,
        includeBase64: true,
        compressImageQuality: 0.7,
        mediaType: "photo",
    }).then(images => {
        // console.log(images)
        setPhotos(images)
    });
}

这是图片上传功能;

uploadImages = () => {
    const provider = firebase.database().ref(`providers/${uid}`);

    console.log(photos)
    return Promise.all(photos)
        .then(photoarray => {
            console.log('all responses are resolved successfully');
            // take each photo, upload it and then return it's download URL
            return Promise.all(photoarray.map((photo) => {
                let file = photo.data;
                const path = "Img_" + uuid.v4();
                const storageRef = firebase 
                    .storage()
                    .ref(`theft/${uid}/${path}`);
                let metadata = {
                    contentType: 'image/jpeg',
                };

                // upload current photo and get it's download URL
                return storageRef.putString(file, 'base64', metadata) 
                    .then(() => {
                        console.log(`${path} was uploaded successfully.`);
                        return storageRef.getDownloadURL() 
                            .then(fileUrl => ({ uri: fileUrl }));
                    });
            }));
        })
        .catch((err) => {
            console.error(err);
        });
};

阵列中的所有图像均以image / jpeg文件形式上传。但是,未正确上传的文件在Firebase控制台中显示“错误加载预览”。

我无法解决这个问题,怎么可能正确显示某些图片,而有些人以前没有看过?

0 个答案:

没有答案