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

cor*_*san 10 javascript android firebase react-native firebase-storage

我正在使用本地反应,我需要使用Firebase存储将图像上传到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');
  });
}
Run Code Online (Sandbox Code Playgroud)

图像选择器:

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);
  }
});
Run Code Online (Sandbox Code Playgroud)

小智 5

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

  • @corasan您介意为Blob上传代码吗?我处在和你完全一样的情况 (5认同)

Dev*_*per 5

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');
      });
    }
Run Code Online (Sandbox Code Playgroud)


Fra*_*sco 5

如果image是base64数据URL,则可以使用'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');
  });
}
Run Code Online (Sandbox Code Playgroud)