我发现Firebase已经发布了一个名为Cloud Firestore的新测试版。在文档中,对文档的所有操作都进行了很好的描述,但是我无法找到任何关于使用Android将媒体文件上传和下载到Cloud Firestore的内容......
有没有人有上传/下载媒体文件的信息/教程等(例如mp3文件和图片)?
非常感谢您提前获得答案!
答案 0 :(得分:8)
您无法将文件存储到Firebase Cloud Firestore,而是可以使用Firebase存储和Firebase Cloud Firestore的组合来激活所需的功能。
Firebase存储是存储文件并从中下载。
Firebase实时数据库是在其上存储json no-sql数据库。
Firebase Cloud Firestore 是Firebase实时数据库的高级版本,与实时数据库的区别在于它是基于文档的非SQL数据库。
假设您需要使用数据库和存储开发应用程序,则需要将任何数据库与Firebase存储相结合。将文件存储在firebase存储中,并将其保存在firebase实时或firebase云端防火墙中,以便下载和上传。
要在firebase存储上传文件:
FirebaseStorage firebaseStorage;
//for firebase storage
firebaseStorage = FirebaseStorage.getInstance();
StorageReference storageReference;
storageReference = firebaseStorage.getReferenceFromUrl("url");
final StorageReference imageFolder = storageReference.child(""+imageName);
imageFolder.putFile(saveUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//submitted sucessfully
imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.wtf(TAG, "download image path : "+uri.toString() );
//now you have path to the uploaded file save this path to your database
uploadDataToUserUploadedImage(uri);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
getMvpView().stopProgressLoading();
getMvpView().onError("Fail to submit feedback "+e.getMessage());
getMvpView().hideLoading();
return;
}
});
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred()/taskSnapshot.getTotalByteCount());
getMvpView().publishProgress((int)progress);
Log.d(TAG, "onProgress: "+progress );
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
getMvpView().hideLoading();
getMvpView().stopProgressLoading();
getMvpView().onError("Error: "+e.getMessage());
}
});