为什么只上传1张3张照片,而数据库却没有显示所有字段?

时间:2019-09-30 00:35:19

标签: java android firebase firebase-storage

我使用Firebase创建了一个Android应用,并且确实有3个按钮可以上传3个不同的图像。但是,当我提交请求时,它上传了第三张图片3次,并且在数据库中缺少某些字段。让我告诉你我做了什么:

这是用户模型:


public class CarrierUser {


    public String fullname;
    public String email;
    public String password;
    public String address;
    public String city;
    public String state;
    public String zipcode;
    public String country;
    public String phone;

    public String cardnumber;
    public String expiredate;
    public String CVC;
    public String rate;
    public String type;
    public String profilePic;
    public String idPic;
    public String criminalRecordPic;
    public Boolean activated;

    public CarrierUser() {

    }

    public CarrierUser(String fullname, String email, String password, String address, String city, String state, String zipcode, String country, String phone, String cardnumber, String expiredate, String CVC, String type, String rate, String profilePic, String idPic, String criminalRecordPic, Boolean activated) {
        this.fullname = fullname;
        this.email = email;
        this.password = password;
        this.address = address;
        this.city = city;
        this.state = state;
        this.zipcode = zipcode;
        this.country = country;
        this.phone = phone;
        this.cardnumber = cardnumber;
        this.expiredate = expiredate;
        this.CVC = CVC;
        this.type = type;
        this.rate = rate;
        this.profilePic = profilePic;
        this.idPic = idPic;
        this.criminalRecordPic = criminalRecordPic;
        this.activated = activated;
    }
}

这是注册类,我知道要阅读很多东西,但我确实需要帮助。

public class SignupCarrier extends AppCompatActivity {
    EditText editfullname, editemail, editpassword, editconfirmpassword, editaddress, editcity, editstate, editzipcode, editcountry, editphone, editcardnumber, editexpiredate, editcvc;
Button upProfile, upIDPhoto, upCriminalRecord, buttonSigningUp;
private Uri mProfilePic, mIdPhoto,mCriminalRecord;
FirebaseAuth mFirebaseAuth;
    String finalPath;
private StorageReference mStorageRef;
private StorageTask mUploadTask;
    private static final int PICK_IMAGE_REQUEST_PROFILE = 1;
    private static final int PICK_IMAGE_REQUEST_ID = 1;
    private static final int PICK_IMAGE_REQUEST_CR = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup_carrier);

        editfullname = (EditText) findViewById(R.id.fullname);
        editemail = (EditText) findViewById(R.id.email);
        editpassword = (EditText) findViewById(R.id.password);
        editconfirmpassword = (EditText) findViewById(R.id.confirmpassword);
        editaddress = (EditText) findViewById(R.id.address);
        editcity = (EditText) findViewById(R.id.city);
        editstate = (EditText) findViewById(R.id.state);
        editzipcode = (EditText) findViewById(R.id.zipcode);
        editcountry = (EditText) findViewById(R.id.country);
        editphone = (EditText) findViewById(R.id.phone);



        editcardnumber = (EditText) findViewById(R.id.cardnumber);
        editexpiredate = (EditText) findViewById(R.id.expiredate);
        editcvc = (EditText) findViewById(R.id.cvc);

        mFirebaseAuth = FirebaseAuth.getInstance();
        upProfile = (Button) findViewById(R.id.profilePic);
        upIDPhoto = (Button) findViewById(R.id.idphotoPic);
        upCriminalRecord = (Button) findViewById(R.id.criminalRecord);
        buttonSigningUp = (Button) findViewById(R.id.buttonSigningUp);
        mStorageRef = FirebaseStorage.getInstance().getReference("carriersPictures");

        upProfile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser(mProfilePic);
            }
        });
        upIDPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser(mIdPhoto);
            }
        });
        upCriminalRecord.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser(mCriminalRecord);
            }
        });

        buttonSigningUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String profilePictUri = uploadFile(mProfilePic);
                final String idPictUri = uploadFile(mIdPhoto);
                final String criminalRecordUri = uploadFile(mCriminalRecord);
                final String fullname = editfullname.getText().toString();
                final String email = editemail.getText().toString();
                final String password = editpassword.getText().toString();
                final String confirmPassword = editconfirmpassword.getText().toString();
                final String address = editaddress.getText().toString();
                final String city = editcity.getText().toString();
                final String state = editstate.getText().toString();
                final String zipcode = editzipcode.getText().toString();
                final String country = editcountry.getText().toString();
                final String phone = editphone.getText().toString();
                final String rate = "0";
                final String type = "carrier";
                final String cardnumber = editcardnumber.getText().toString();
                final String expiredate = editexpiredate.getText().toString();
                final String CVC = editcvc.getText().toString();
                String s = "none";
                if(fullname.isEmpty()) {
                    editfullname.setError("enter a valid fullname");
                    editfullname.requestFocus();
                    return;

                }
                if(email.isEmpty()) {
                    editemail.setError("enter a valid email");
                    editemail.requestFocus();
                    return;
                }
                if(password.isEmpty()) {
                    editpassword.setError("enter a valid password");
                    editpassword.requestFocus();
                    return;
                }
                if(confirmPassword.isEmpty()) {
                    editconfirmpassword.setError("this should not be empty");
                    editconfirmpassword.requestFocus();
                    return;
                }
                if(address.isEmpty()) {
                    editaddress.setError("enter a valid address");
                    editaddress.requestFocus();
                    return;
                }
                if(city.isEmpty()) {
                    editcity.setError("enter a valid city ");
                    editcity.requestFocus();
                    return;
                }
                if(state.isEmpty()) {
                    editstate.setError("enter a valid state/region");
                    editstate.requestFocus();
                    return;
                }
                if(zipcode.isEmpty()) {
                    editzipcode.setError("enter a valid zipcode");
                    editzipcode.requestFocus();
                    return;
                }
                if(country.isEmpty() ) {
                    editcountry.setError("enter a valid country");
                    editcountry.requestFocus();
                    return;
                }

                if(phone.isEmpty()) {
                    editphone.setError("enter a valid phone");
                    editphone.requestFocus();
                    return;
                }


                if(password.length() < 8){
                    editpassword.setError("password should be at least 8 characters long");
                    editpassword.requestFocus();
                    return;
                }
                if(!password.equals(confirmPassword)) {
                    editconfirmpassword.setError("passwords don't match");
                    editconfirmpassword.requestFocus();
                    return;
                }

                if(cardnumber.isEmpty()) {
                    editcardnumber.setError("enter a valid card number");
                    editcardnumber.requestFocus();
                    return;

                }

                if(expiredate.isEmpty())
                {
                    editexpiredate.setError("enter a valid expired date ");
                    editexpiredate.requestFocus();
                }
                if(CVC.isEmpty())
                {
                    editcvc.setError("enter a valid CVC ");
                    editcvc.requestFocus();
                }
                final boolean activated = false;
                mFirebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if(task.isSuccessful()) {
                            CarrierUser carrierUser = new CarrierUser(
                                    fullname,
                                    email,
                                    password,
                                    address,
                                    city,
                                    state,
                                    zipcode,
                                    country,
                                    phone,
                                    cardnumber,
                                    expiredate,
                                    CVC,
                                    type,
                                    rate,
                                    profilePictUri,
                                    idPictUri,
                                    criminalRecordUri,
                                    activated

                            );
                            FirebaseDatabase.getInstance().getReference("User")
                                    .child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(carrierUser).addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if(task.isSuccessful()) {
                                        Toast.makeText(SignupCarrier.this,"Your request has been sent for approval", Toast.LENGTH_LONG).show();
                                        openLogin();
                                    }
                                }
                            });
                        }
                    }
                });



            }
        });

    }

    private void openLogin() {
        Intent i = new Intent(SignupCarrier.this, screenNotLogged.class);
        startActivity(i);
    }
    private  String getFileExtension(Uri uri) {
        ContentResolver cR = getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return mime.getExtensionFromMimeType(cR.getType(uri));
    }
    private String uploadFile(Uri path) {

        if(path != null) {

            StorageReference fileReference = mStorageRef.child(editfullname.getText().toString()+"-"+System.currentTimeMillis()+getFileExtension(path));
            mUploadTask = fileReference.putFile(path)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            finalPath = taskSnapshot.getUploadSessionUri().toString();
                        }
                    })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(SignupCarrier.this, e.getMessage(),Toast.LENGTH_LONG).show();
                }
            });
        }
        return finalPath;
    }
    private void openFileChooser( Uri urltoPhoto) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        if (urltoPhoto == mProfilePic) {
            startActivityForResult(intent, PICK_IMAGE_REQUEST_PROFILE);
        } else if (urltoPhoto == mIdPhoto) {
            startActivityForResult(intent, PICK_IMAGE_REQUEST_ID);
        } else if (urltoPhoto == mCriminalRecord) {
            startActivityForResult(intent, PICK_IMAGE_REQUEST_CR);
        }

    }

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

        if(requestCode == PICK_IMAGE_REQUEST_PROFILE && resultCode == RESULT_OK && data != null && data.getData() != null)
        {
            mProfilePic = data.getData();


        }
        if(requestCode == PICK_IMAGE_REQUEST_ID && resultCode == RESULT_OK && data != null && data.getData() != null)
        {
            mIdPhoto = data.getData();


        }
        if(requestCode == PICK_IMAGE_REQUEST_CR && resultCode == RESULT_OK && data != null && data.getData() != null)
        {
            mCriminalRecord = data.getData();


        }
    }
}


因为我需要上传的文件的URL,所以我认为需要声明一些变量,这些变量等于将该图像上传到数据库的函数,并使该函数返回String,这似乎是逻辑。 我认为缺少profilePic,idPic和CrimeRecordPic字段是因为该逻辑不起作用并且该函数未返回我需要的字符串,但是问题是,如何获得这些URL?

如果您能帮助我,我将不胜感激!谢谢!

0 个答案:

没有答案