[我正在尝试将刚刚记录到音乐中的音乐文件传递到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();
}
});
您传递给可调用的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。