Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java将上传到Fire Storage的图像Url上传到fireStore中,同时将其保存在fireStore中_Java_Android_Firebase_Google Cloud Firestore_Firebase Storage - Fatal编程技术网

如何使用Java将上传到Fire Storage的图像Url上传到fireStore中,同时将其保存在fireStore中

如何使用Java将上传到Fire Storage的图像Url上传到fireStore中,同时将其保存在fireStore中,java,android,firebase,google-cloud-firestore,firebase-storage,Java,Android,Firebase,Google Cloud Firestore,Firebase Storage,这是我的代码,我可以在Toast消息中检索图像Url,但它无法保存在firestore中。请告诉我是否有其他方法来执行此操作,或者我在存储Url时遇到了问题: public class register extends AppCompatActivity { EditText emails; EditText passwords; EditText ages; Button registers; Button addImage; EditTex

这是我的代码,我可以在Toast消息中检索图像Url,但它无法保存在firestore中。请告诉我是否有其他方法来执行此操作,或者我在存储Url时遇到了问题:

public class register extends AppCompatActivity {

     EditText emails;
    EditText passwords;
    EditText ages;
    Button registers;
    Button addImage;
    EditText country;

    FirebaseFirestore db;
    FirebaseAuth auth;
    FirebaseUser auth1;
    private StorageTask task;

    Uri url ;
    Uri imageUri;

    static final int IMAGE_REQUEST =2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);


        auth = FirebaseAuth.getInstance();
        registers = findViewById(R.id.button);
        emails = findViewById(R.id.eamil);
        passwords = findViewById(R.id.password);
        ages=findViewById(R.id.age);
        country=findViewById(R.id.country);
        addImage = findViewById(R.id.button51);

         db =FirebaseFirestore.getInstance();





             registers.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String v_email = emails.getText().toString();
                String v_password = passwords.getText().toString();


                if (TextUtils.isEmpty(v_email)||TextUtils.isEmpty(v_password)){

                    Toast.makeText(register.this,"Eempty Credentials",Toast.LENGTH_SHORT).show();
                }else if(v_password.length()<6){

                    Toast.makeText(register.this,":password is short",Toast.LENGTH_SHORT).show();

                }else{









                        upload();
                        registerUser(v_email, v_password);




                }
            }
        });

             addImage.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {

                     openImage();

                 }
             });



    }

    private void registerUser(final String email, final String password) {

        auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(register.this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if(task.isSuccessful()){


                    Map<String , Object> users = new HashMap<>();
                    users.put("Email", emails.getText().toString());
                    users.put("Password", passwords.getText().toString());
                    users.put("Country", country.getText().toString());
                    users.put("AGe", ages.getText().toString());
                    users.put("Image", url.toString());
                    auth1 = FirebaseAuth.getInstance().getCurrentUser();
                    db.collection("Users").document(auth1.getUid()).set(users).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {

                            //Toast.makeText(com.example.pleasework.register.this,"registeration was successful",Toast.LENGTH_SHORT).show();

                        }
                    });



//                    startActivity(new Intent(com.example.pleasework.register.this, MainActivity.class));
//                    finish();


                }else{


                    Toast.makeText(com.example.pleasework.register.this,"Resgisteration fail",Toast.LENGTH_SHORT).show();
                }
            }
        });


    }
    public  String getFileExtension(Uri uri){

        ContentResolver contentResolver = getContentResolver();
        MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();

        return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));



    }

   public void  upload (){

        if (imageUri != null){


            final StorageReference fileRef  = FirebaseStorage.getInstance().getReference(System.currentTimeMillis()+getFileExtension(imageUri) );

            fileRef.putFile(imageUri)
                    .addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                            fileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {

                                    url = uri;
                                    Toast.makeText(register.this,"Upload Sucess" + url.toString(),Toast.LENGTH_SHORT).show();

                                }
                            });

                        }
                    });


        }


    }

    public  void openImage(){

        Intent intent = new Intent();
        intent.setType("image/");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent,IMAGE_REQUEST);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        imageUri=data.getData();

    }
}




            }
        });
    }


}
公共类寄存器扩展AppCompative活动{
编辑文本电子邮件;
编辑文本密码;
编辑文本时代;
按钮寄存器;
按钮添加图像;
编辑文本国家;
FirebaseFirestore数据库;
FirebaseAuth-auth;
FirebaseUser auth1;
私有存储任务;
uriurl;
Uri-imageUri;
静态最终int图像_请求=2;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u寄存器);
auth=FirebaseAuth.getInstance();
寄存器=findviewbyd(R.id.button);
电子邮件=findViewById(R.id.eamil);
密码=findViewById(R.id.password);
ages=findViewById(R.id.age);
国家=findViewById(R.id.country);
addImage=findViewById(R.id.按钮51);
db=FirebaseFirestore.getInstance();
registers.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串v_email=emails.getText().toString();
字符串v_password=passwords.getText().toString();
if(TextUtils.isEmpty(v|u电子邮件)| TextUtils.isEmpty(v|u密码)){
Toast.makeText(register.this,“Eempty Credentials”,Toast.LENGTH_SHORT.show();
}else if(v_password.length()调用此进程,用于在进程之前执行进程

它可以同时上传图像和数据,因此图像链接不会存储,因为它没有完成图像的上传,这不到一秒钟

当图像上传完毕,数据存储在FireStore中时,您可以使用此方法:

   private void registerUser(final String email, final String password) {

            auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(register.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    if(task.isSuccessful()){
                       upload ();
                    }
});
public void  upload (){

        if (imageUri != null){


            final StorageReference fileRef  = FirebaseStorage.getInstance().getReference(System.currentTimeMillis()+getFileExtension(imageUri) );

            fileRef.putFile(imageUri)
                    .addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                            fileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {

                                    url = uri;

                                Map<String , Object> users = new HashMap<>();
                                users.put("Email", emails.getText().toString());
                                users.put("Password", passwords.getText().toString());
                                users.put("Country", country.getText().toString());
                                users.put("AGe", ages.getText().toString());
                                users.put("Image", url.toString());
                                auth1 = FirebaseAuth.getInstance().getCurrentUser();

                    db.collection("Users").document(auth1.getUid()).set(users).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {

                             Toast.makeText(register.this,"Upload Sucess" + url.toString(),Toast.LENGTH_SHORT).show();

                             }
                         });

                       }
                   });
                }
            }); 
        }

    }
private void registerUser(最终字符串电子邮件,最终字符串密码){
auth.createUserWithEmailAndPassword(电子邮件,密码).addOnCompleteListener(register.this,new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
上传();
}
});
此处确保先上传图像,然后将ImageUrl添加到fireStore:

   private void registerUser(final String email, final String password) {

            auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(register.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {

                    if(task.isSuccessful()){
                       upload ();
                    }
});
public void  upload (){

        if (imageUri != null){


            final StorageReference fileRef  = FirebaseStorage.getInstance().getReference(System.currentTimeMillis()+getFileExtension(imageUri) );

            fileRef.putFile(imageUri)
                    .addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                            fileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {

                                    url = uri;

                                Map<String , Object> users = new HashMap<>();
                                users.put("Email", emails.getText().toString());
                                users.put("Password", passwords.getText().toString());
                                users.put("Country", country.getText().toString());
                                users.put("AGe", ages.getText().toString());
                                users.put("Image", url.toString());
                                auth1 = FirebaseAuth.getInstance().getCurrentUser();

                    db.collection("Users").document(auth1.getUid()).set(users).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {

                             Toast.makeText(register.this,"Upload Sucess" + url.toString(),Toast.LENGTH_SHORT).show();

                             }
                         });

                       }
                   });
                }
            }); 
        }

    }
公共作废上传(){
if(imageUri!=null){
final StorageReference fileRef=FirebaseStorage.getInstance().getReference(System.currentTimeMillis()+getFileExtension(imageUri));
fileRef.putFile(imageUri)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
fileRef.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
url=uri;
Map users=newhashmap();
users.put(“Email”,emails.getText().toString());
users.put(“Password”,passwords.getText().toString());
users.put(“Country”,Country.getText().toString());
users.put(“AGe”,ages.getText().toString());
user.put(“Image”,url.toString());
auth1=FirebaseAuth.getInstance().getCurrentUser();
db.collection(“Users”).document(auth1.getUid()).set(Users.addOnCompleteListener(新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
Toast.makeText(register.this,“Upload success”+url.toString(),Toast.LENGTH\u SHORT.show();
}
});
}
});
}
}); 
}
}