【问题标题】:String does not match format 'base64': Invalid character found and Can currently only create a Blob from other Blobs react native字符串与格式“base64”不匹配:发现无效字符,目前只能从其他 Blob 创建一个 Blob 反应原生
【发布时间】:2018-03-04 22:33:05
【问题描述】:

我尝试将图像上传到 Firebase。我正在使用“react-native-image-picker”,但每次我都遇到错误。 Firebase 存储:字符串与格式“base64”不匹配:发现无效字符。我看到很多与此问题相关的帖子,但没有一个有效。

uploadImage = response = >
{
    let metadata = {
        contentType: response.type
    }
    let randomId = shortid.generate()
    let fileExtension
    if (Platform.OS == "android") fileExtension = response.type.split("/")[1]
    else
    {
        fileExtension = response.fileName.split(".")[1]
    }
    let storagePath =
        "/Base_Url/" +
        this.props.username +
        "/" +
        this.props.sessionId +
        "/" +
        randomId +
        "." +
        fileExtension
    let storingRef = firebase.storage()
        .ref(storagePath);
    storingRef.putString(response.data, "base64url", metadata)
        .on(
            firebase.storage.TaskEvent.STATE_CHANGED,
            snapshot = >
            {
                var progress =
                    snapshot.bytesTransferred / snapshot.totalBytes * 100;
                if (progress === 100)
                {
                    let downloadURL = FireBaseUtils.getDownloadURL(storagePath);
                    this.setState(
                    {
                        url: snapshot.downloadURL
                    });
                }
                else
                {
                    switch (snapshot.state)
                    {
                    case firebase.storage.TaskState.PAUSED:
                        break;
                    case firebase.storage.TaskState.RUNNING:
                        break;
                    }
                }
            },
            error = >
            {
                switch (error.code)
                {
                case "storage/unauthorized":
                    break;
                case "storage/canceled":
                    break;
                case "storage/unknown":
                    break;
                }
            }
    );
};

【问题讨论】:

    标签: firebase react-native base64 es6-modules


    【解决方案1】:

    尝试使用putString(message, 'base64')(不是base64url

    如果 Blob、File 或 Uint8Array 不可用,您可以使用 putString() 方法上传原始、base64、base64url 或 data_url 编码字符串到 Cloud Storage。

    https://firebase.google.com/docs/storage/web/upload-files

    希望对你有帮助

    【讨论】:

    • 我试过 putString(message, 'base64') 但它也不起作用
    • 您可以尝试添加substring(23),好吗? toringRef.putString(response.data.substring(23), "base64") 之类的东西如果有帮助,请告诉我
    • @DheerajKumar 你找到解决方案了吗?
    • @Yossi 我最终遇到了类似的问题并在这里发布了一个解决方案:stackoverflow.com/questions/52157253/… 基本上 JavaScript 核心不处理 atob/bota 方法来解码/编码 base64,所以我们必须自己添加它.希望它能解决你的问题
    猜你喜欢
    • 2017-05-09
    • 2019-01-13
    • 1970-01-01
    • 2019-02-08
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多