web-dev-qa-db-ja.com

Android Firebase Storageにファイルをアップロードした後、ファイルのダウンロードURLを取得するにはどうすればよいですか? getDownloadUrl()が機能しない

新しいAndroid firebaseプロジェクトでは、com.google.firebase:firebase-storage:16.0.1ライブラリを使用しました。

次のエラーが表示されます。

enter image description here

ライブラリfirebase-storage:15.0.2およびtaskSnapshot.getDownloadUrl();を持つ別のプロジェクトを開き、そのプロジェクトで作業しました。しかし、最新の依存ライブラリを使用した後は機能しません。

さて、ファイルURLを取得するにはどうすればよいですか?

ファイルダウンロードリンクを取得する方法はありますか?

14
Hasib Akter

問題の2つの解決策を見つけました。

Firebase Googleドキュメント

//add file on Firebase and got Download Link
filePath.putFile(imageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()){
            throw task.getException();
        }
        return filePath.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()){
            Uri downUri = task.getResult();
            Log.d(TAG, "onComplete: Url: "+ downUri.toString());
        }
    }
});

別の解決策!

Google Firebaseのドキュメントよりも簡単で小さく、使用します。

filePath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                Log.d(TAG, "onSuccess: uri= "+ uri.toString());
            }
        });
    }
});
32
Hasib Akter

このメソッドはバージョン16.0.1で廃止されました( Firebaseリリースノート を確認してください)

StorageReference.getDownloadUrl()

ファイルのアップロード後にそれらを取得したい場合は、ドキュメントを確認する必要があります here 。既に更新されています。

6
goblin

それが私がkotlin Androidでダウンロードリンクを取得する方法です。

 ref.putFile(filePath!!)
            .addOnSuccessListener {
            val result = it.metadata!!.reference!!.downloadUrl;
            result.addOnSuccessListener {

               val imageLink = it.toString()


            }
        }
1
Atif AbbAsi

taskSnapshot.getDownloadUrl()は非推奨になっているため、addOnSuccessListener()メソッドでstorageReferenceを使用し、getDownloadUrl()メソッドを呼び出してファイルのURLを取得することをお勧めします。それが役に立てば幸い。

         mUploadTask = storageRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                // get the image Url of the file uploaded
                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        // getting image uri and converting into string
                        Uri downloadUrl = uri;
                       fileUrl = downloadUrl.toString();


                    }
                });

            }
        });
0
ali sampson

Firebaseがメソッドを更新したため、ご自身で親切に更新して、このメソッドを親切に使用してください。

これはあなたが迷惑を感じる基本的な行であり、非常に単純な方法でダウンロードパスを取得するだけです

 StorageReference ref = storageReference.child("images/"+ UUID.randomUUID().toString());
  UploadTask  uploadTask = ref.putFile(filePath);
  Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot,
         Task<Uri>>() {
   @Override
   public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
     if (!task.isSuccessful()) {
       throw task.getException();
     }

                                                              // Continue with the task to get the download URL
     return ref.getDownloadUrl();
   }
 }).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
      if (task.isSuccessful()) {
        Uri downloadUri = task.getResult();


    ///here is your image url enjoy this 

          Toast.makeText(CloudStorageActivity.this, "Uploaded", Toast.LENGTH_SHORT).show();

        }


      } else {


        // Handle failures
        // ...
      }
    }
  });
0
Najaf Ali