有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将多个图像上载到firebase并检索到viewpage

我想上传多个图像到firebase并检索到查看页面。我只能上传多个图像,但在实时数据库中只能获得一个Uri getdlownload链接,因为只有一个图像会进入查看页面

enter code here
private void sendDataToFirebase() {
    progressBar.setVisibility(View.VISIBLE);
    id = databaseReference.push().getKey();

    Toast.makeText(this, "Sending", Toast.LENGTH_SHORT).show();



   photoUri=new Uri[photoUris.size()];
    for (i = 0; i < photoUris.size(); i++) {
       photoUri[i] = photoUris.get(i);

//File fileUriPhoto=新文件(SiliCompressor.with(this)。 // //压缩(FileUtils.getPath(this,photoUri),新文件(this.getCacheDir(),“AddPostPhotos”); //Uri=Uri。fromFile(fileUriPhoto)

        String imageName = UUID.randomUUID().toString();
        final StorageReference imageFolder = mfirebaseStorage.child("AddPost/" + photoUri[i].getLastPathSegment());


            imageFolder.putFile(photoUri[i]).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            progressBar.setVisibility(View.GONE);

                            addPostModel = new AddPostModel();
                            addPostModel.setCategories(spinner.getSelectedItem().toString().trim());
                            addPostModel.setSubcategories(spinner1.getSelectedItem().toString().trim());
                            addPostModel.setTitle(name.getText().toString().trim());
                            addPostModel.setAuthor(author.getText().toString().trim());
                            addPostModel.setPrice(price.getText().toString().trim());
                            addPostModel.setDesc(desc.getText().toString().trim());
                            addPostModel.setUserUid(mCurrentUser.getUid());
                            addPostModel.setPhoneNumaber(mCurrentUser.getPhoneNumber());
                            addPostModel.setDateTime(date);
                            addPostModel.setImageUrl(photoUri[i].toString());//Here is the problem//
                            addPostModel.setKey(id);
                            databaseReference.child(id).setValue(addPostModel);



                        }
                    });

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

                    Toast.makeText(AddPostFormActivity.this, "Post added", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(AddPostFormActivity.this,Dashboard.class);
                    startActivity(intent);

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(AddPostFormActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
        }

共 (1) 个答案

  1. # 1 楼答案

    试试这个方法

    imageFolder.putFile(photoUri[i]).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
    
                    //Here you are get the download url 
                    Task<Uri> urlTask =taskSnapshot.getStorage().getDownloadUrl();
                    Uri downloadUrl = urlTask.getResult();
                    final String sdownload_url = String.valueOf(downloadUrl);
                    
                    
                    progressBar.setVisibility(View.GONE);
                    addPostModel = new AddPostModel();
                            
                  addPostModel.setCategories(spinner.getSelectedItem().toString().trim());
                            addPostModel.setSubcategories(spinner1.getSelectedItem().toString().trim());
                            addPostModel.setTitle(name.getText().toString().trim());
                            addPostModel.setAuthor(author.getText().toString().trim());
                            addPostModel.setPrice(price.getText().toString().trim());
                            addPostModel.setDesc(desc.getText().toString().trim());
                            addPostModel.setUserUid(mCurrentUser.getUid());
                            addPostModel.setPhoneNumaber(mCurrentUser.getPhoneNumber());
                            addPostModel.setDateTime(date);
                            addPostModel.setImageUrl(photoUri[i].toString());//Here is the problem//
                            addPostModel.setKey(id);
                            databaseReference.child(id).setValue(addPostModel);
    
                }
            }).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
    
                    Toast.makeText(AddPostFormActivity.this, "Post added", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(AddPostFormActivity.this,Dashboard.class);
                    startActivity(intent);
    
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(AddPostFormActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });