Java 如何将文件/位图上载到云Firestore?

Java 如何将文件/位图上载到云Firestore?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我想将文件/位图列表上载到Cloud Firestore 首先,我想上传一个文件/位图,但我有很多错误 private FirebaseFirestore db = FirebaseFirestore.getInstance(); //... db.collection("CarShop").document("Cars").set(mFile); 按照以下方法,您可以将文件上载到Firebase云存储 FirebaseStorage storage = FirebaseStora

我想将文件/位图列表上载到Cloud Firestore

首先,我想上传一个文件/位图,但我有很多错误

 private FirebaseFirestore db = FirebaseFirestore.getInstance();
  //...
  db.collection("CarShop").document("Cars").set(mFile);

按照以下方法,您可以将文件上载到Firebase云存储

 FirebaseStorage storage = FirebaseStorage.getInstance();
 // Create a storage reference from our app
 StorageReference storageRef = storage.getReference();
 Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
uploadTask = riversRef.putFile(file);

// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
        // ...
    }
});
FirebaseStorage=FirebaseStorage.getInstance();
//从我们的应用程序创建存储引用
StorageReference-storageRef=storage.getReference();
Uri file=Uri.fromFile(新文件(“path/to/images/rivers.jpg”);
storagereferef=storageRef.child(“images/”+file.getLastPathSegment());
uploadTask=riversRef.putFile(文件);
//注册观察员,以便在下载完成时或下载失败时监听
uploadTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理不成功的上传
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//taskSnapshot.getMetadata()包含文件元数据,如大小、内容类型等。
// ...
}
});
你可以阅读更多关于它的内容

对于Bimap:

Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();

UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
        // ...
    }
});
位图位图=((BitmapDrawable)imageView.getDrawable()).getBitmap();
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
压缩(bitmap.CompressFormat.JPEG,100,baos);
字节[]数据=baos.toByteArray();
UploadTask UploadTask=mountainsRef.putBytes(数据);
uploadTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理不成功的上传
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//taskSnapshot.getMetadata()包含文件元数据,如大小、内容类型等。
// ...
}
});

您有哪些错误?如果我有一个自定义类,并在其中列出位图,我可以怎么做?只需循环它。这是一个异步。。因此,在任何情况下都会起作用。此外,如果有帮助,请接受答案。但是私有FirebaseFirestore db=FirebaseFirestore.getInstance();?什么时候使用?我已经更新了答案。检查您将需要
FirebaseStorage
,而不是
FirebaseFirestore
。创建
riversRef
时,您可以根据需要修改路径。但我使用Firestore。还是一样?