Firebase存储:字符串格式不匹配' base64':找到无效字符

时间:2016-12-23 10:06:27

标签: javascript android firebase react-native firebase-storage

我正在使用本地反应,我需要使用Firebase Storage将图像上传到Firebase。我使用react-native-image-picker从手机中选择了图像,该图像为我提供了base64编码数据。

当我尝试将图片上传到Firebase时,它会给我错误Firebase Storage: String does not match format 'base64': Invalid character found,但我已经检查过该字符串是否是带有正则表达式的有效base64字符串,它是!

我已经从这里读了几个答案,但我尝试了所有这些。这是我的代码:

function uploadImage(image){
  const user = getCurrentUser();
  const refImage = app.storage().ref(`profileImages/${user.uid}`);

  refImage.putString(image, 'base64').then(() => {
    console.log('Image uploaded');
  });
}

图像选择器:

ImagePicker.showImagePicker(ImageOptions, (response) => {
  if (response.didCancel) {
    console.log('User cancelled image picker');
  }
  else if (response.error) {
    console.log('ImagePicker Error: ', response.error);
  }
  else if (response.customButton) {
    console.log('User tapped custom button: ', response.customButton);
  }
  else {
    uploadImage(response.data);
  }
});

4 个答案:

答案 0 :(得分:4)

您需要从图像变量"data:image/jpeg;base64,中删除此字符串。 需要only data

答案 1 :(得分:4)

如果image是base64数据网址,您可以使用' data_url'参数和元数据:

function uploadImage(image){
  const user = getCurrentUser();
  const refImage = app.storage().ref(`profileImages/${user.uid}`);

  refImage.putString(image, 'data_url', {contentType:’image/jpg’}).then(() => {
    console.log('Image uploaded');
  });
}

答案 2 :(得分:3)

image.substring(23)

function uploadImage(image){
      const user = getCurrentUser();
      const refImage = app.storage().ref(`profileImages/${user.uid}`);

      refImage.putString(image.substring(23), 'base64').then(() => {
        console.log('Image uploaded');
      });
    }

答案 3 :(得分:0)

我使用split()。

function uploadImage(image){
  const user = getCurrentUser();
  const refImage = app.storage().ref(`profileImages/${user.uid}`);

  refImage.putString(image.split(',')[1], 'base64').then(() => {
    console.log('Image uploaded');
  });
}