新しいAndroid firebaseプロジェクトでは、com.google.firebase:firebase-storage:16.0.1
ライブラリを使用しました。
次のエラーが表示されます。
ライブラリfirebase-storage:15.0.2
およびtaskSnapshot.getDownloadUrl();
を持つ別のプロジェクトを開き、そのプロジェクトで作業しました。しかし、最新の依存ライブラリを使用した後は機能しません。
さて、ファイルURLを取得するにはどうすればよいですか?
ファイルダウンロードリンクを取得する方法はありますか?
問題の2つの解決策を見つけました。
//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());
}
});
}
});
このメソッドはバージョン16.0.1で廃止されました( Firebaseリリースノート を確認してください)
StorageReference.getDownloadUrl()
ファイルのアップロード後にそれらを取得したい場合は、ドキュメントを確認する必要があります here 。既に更新されています。
それが私がkotlin Androidでダウンロードリンクを取得する方法です。
ref.putFile(filePath!!)
.addOnSuccessListener {
val result = it.metadata!!.reference!!.downloadUrl;
result.addOnSuccessListener {
val imageLink = it.toString()
}
}
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();
}
});
}
});
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
// ...
}
}
});