我已经成功使用Ionic相机API拍摄了一张照片:
async pickImage(sourceType: CameraSource) {
const image = await Camera.getPhoto({
quality: 90,
allowEditing: true,
resultType: CameraResultType.Uri,
source: sourceType,
});
console.log(image);
}
这给了我这个:
我也发现可以使用Angular Fire Storage上传,但我无法弄清如何连接这两个API。我真的不明白中间的格式是什么,我应该向相机API请求哪种格式,并且我应该向AngularFireStorage API提供哪种格式。
我尝试过这个:
const filePath = 'name-your-file-path-here';
const ref = this.storage.ref(filePath);
const task = ref.put(image.webPath);
task
.snapshotChanges()
.pipe(finalize(() => console.log(ref.getDownloadURL())))
.subscribe();
但是我遇到了这个错误:
ERROR Error: Uncaught (in promise): FirebaseStorageError: {"code_":"storage/invalid-argument","message_":"Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File.","serverResponse_":null,"name_":"FirebaseError"}
非常感谢您的支持和关注 :)
Camera.getPhoto({
显然返回一个Promise,如果需要,您可以将其转换为Observable。Firebase也是一样 - 它们都可以相互转换为Promise或Observable。 - Julius DzidzevičiusCamera.getPhoto
获取的格式是(DATA_URL、FILE_URI或NATIVE_URI),然后 promises 返回一个不同的值。对于 AngularFireStorage 也是如此,有不同的值被接受。我知道 observable。如果你检查我提供的代码,它在 observable 上等待,但我不知道如何将这个对象转换为 angularFireAuth 接受的对象。所以,问题与 Promise/Observable/async 没有任何关系。 - J4NCamera.getPhoto
,在angularFireStorage上调用哪个方法以及应该进行什么转换。 - J4Nangularfire
使用 Observables,而原生的 firebase 使用 Promises。如果你使用angularfire
,显然使用 Observables 可能会更容易。但这就是我所能提供的全部帮助了。希望有人能够跟随你的路线,因为需要理解的内容还是相当多的。我建议分享一下你尝试过的内容,这样别人就可以更容易地帮助你了。 - Julius Dzidzevičius