Firebase cloudfunctions对象无法使用json android编码

问题描述 投票:0回答:1

[我正在尝试将刚刚记录到音乐中的音乐文件传递到firebase中的云函数,但是每次尝试上传它时,我都会收到一个错误:

无法使用JSON编码对象:/storage/emulated/0/tempRecordFile.wav

我的代码:

Map<String, Object> data = new HashMap<>();
    data.put("sound", soundFile);
    return firebaseFunctions.getHttpsCallable("soundFunction")
                            .call(data)
                            .continueWith(new Continuation<HttpsCallableResult, Boolean>() {
                                @Override
                                public Boolean then(@NonNull Task<HttpsCallableResult> task) throws Exception {
                                    return (boolean) Objects.requireNonNull(task.getResult()).getData();
                                }
                            });
android json firebase google-cloud-functions firebase-storage
1个回答
0
投票

您传递给可调用的Cloud Functions的参数必须是有效的JSON值。您正在尝试将File作为sound参数传递,并且File不是有效的JSON类型。

[如果要将文件路径传递给Cloud Function,请将其作为字符串传递:

data.put("sound", soundFile.getPath());

[如果要将声音文件的内容传递给Cloud Function,则必须将内容读入内存,然后以JSON兼容类型传递。通常使用base-64编码完成此操作。


我很快想到的最后一个选择是通过Firebase SDK将二进制数据上传到Cloud Storage,然后将路径作为字符串传递给Cloud Function。

为此,请参阅Firebase文档中的upload data from a file,然后将StorageReference.getPath()传递给Cloud Function。

© www.soinside.com 2019 - 2024. All rights reserved.