2017-04-23 4 views
3

私は画像をクリックしてfirebaseに格納されるAndroidアプリケーションを開発しています。クラウド関数はこの画像を処理し、出力をファイアベースにテキストファイル形式で保存します。アンドロイドで出力を表示するために、アプリケーションは出力ファイルが存在するかどうかをチェックし続けます。 「はい」の場合、アプリケーションに出力が表示されます。いいえの場合は、ファイルが利用可能になるまでファイルを待たなければなりません。あなたのアンドロイドアプリケーションからFirebaseストレージにファイルが存在するかどうかをチェックする方法は?

Firebaseにファイルが存在するかどうかを確認するためのドキュメントが見つかりません。助けや指導が役に立ちます。

ありがとうございました。

答えて

1

FirebaseストレージAPIは、ユーザーが存在するファイルのみを要求するように設定されています。

は、このように非既存のファイルには、エラーとして処理する必要があります。

あなたはマニュアルを確認することができますhere

1
あなたは順番にキャッチするために使用することができます約束を返すgetDownloadURLを使用することができます

「見つからない」エラー、またはファイルが存在する場合は処理します。たとえば:

storageRef.child("file.png").getDownloadURL().then(onResolve, onReject); 

function onResolve(foundURL) { 
//stuff 
} 
function onReject(error){ 
//fill not found 
console.log(error.code); 
} 

は、これは別のシンプルかつクリーンなソリューションです

更新しました。

storageRef.child("users/me/file.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { 
    @Override 
    public void onSuccess(Uri uri) { 
        // Got the download URL for 'users/me/profile.png' 
    } 
}).addOnFailureListener(new OnFailureListener() { 
    @Override 
    public void onFailure(@NonNull Exception exception) { 
        // File not found 
    } 
}); 
+0

のための私のコードは、あなたの答えをいただき、ありがとうございます。上記の "当時の"メンバーのJava版を教えてください。 –

+0

定義済みの関数です。あなたは問題がある場合は、更新された答えを参照してください。 –

+0

あなたの迅速な対応に感謝します。私たちは、更新された答えを使ってみましたが、デバッグ中に、ファイルがストレージ内で利用可能でない限り、コントロールは上記の答えのいずれのメソッドにも行きません。 –

0

この

void getReferenceAndLoadNewBackground(String photoName) { 
    final StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("Photos").child(photoName + ".png"); 
    storageReference.getDownloadUrl() 
      .addOnSuccessListener(new OnSuccessListener<Uri>() { 
       @Override 
       public void onSuccess(Uri uri) { 
        loadBackground(storageReference); 
       } 
      }) 
      .addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception exception) { 
        int errorCode = ((StorageException) exception).getErrorCode(); 
        if (errorCode == StorageException.ERROR_OBJECT_NOT_FOUND) { 
         StorageReference storageReference2 = FirebaseStorage.getInstance().getReference().child("Photos").child("photo_1.png"); 
         loadBackground(storageReference2); 
        } 

       } 
      }); 
} 
関連する問題