firebase storage getdownloadurl()方法

qeeaahzv  于 2021-07-06  发布在  Java
关注(0)|答案(7)|浏览(413)

上传图像到firebase存储我附加 addOnSuccessListener 在storagereference的示例上。重写时 onSuccess 我正在呼叫的方法 getDownloadUrl() 以…为例 taskSnapshot 但这给了我一个错误
无法解析方法getdownloadurl()
这个应用程序我已经创建了2个月前,早些时候这个应用程序是正常工作和 getDownloadUrl() 工作也很好。另外,在 taskSnapshot 示例当我按ctrl+space时,在我找不到的建议中 getDownloadUrl() 方法。为什么会这样?
编码到 onActivityResult() :

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. super.onActivityResult(requestCode, resultCode, data);
  4. if(requestCode == RC_SIGN_IN) {
  5. if (resultCode == RESULT_OK) {
  6. Toast.makeText(this, "Signed in!!!1", Toast.LENGTH_SHORT).show();
  7. } else if (resultCode == RESULT_CANCELED) {
  8. Toast.makeText(this, "Failed to sign in", Toast.LENGTH_SHORT).show();
  9. finish();
  10. }
  11. }
  12. else if(requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK){
  13. Uri selectedPhoto = data.getData();
  14. StorageReference localRefrence = storageReference.child(selectedPhoto.getLastPathSegment());
  15. // Uploading the file on the storage
  16. localRefrence.putFile(selectedPhoto).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  17. @Override
  18. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  19. Uri downloadUrl = taskSnapshot.getDownloadUrl();
  20. FriendlyMessage message = new FriendlyMessage(mUsername, null, downloadUrl.toString());
  21. databaseReference.push().setValue(message);
  22. }
  23. });
  24. }
  25. }
plupiseo

plupiseo1#

firebase api已更改。
2018年5月23日
云存储版本16.0.1
删除了不推荐使用的storagemetadata.getdownloadurl()和uploadtask.tasksnapshot.getdownloadurl()方法。要获取当前下载url,请使用storagereference.getdownloadur()。 UploadTask.TaskSnapshot 有一个名为 getMetadata() 返回一个 StorageMetadata 对象。
这个 StorageMetadata 对象包含名为 getReference() 返回一个 StorageReference 对象。
那个 StorageReference 对象包含 getDownloadUrl() 方法,该方法现在返回任务对象而不是uri对象。
然后必须监听该任务以获取uri,uri可以异步完成,也可以以阻塞方式完成;请参见任务api。

vlurs2pr

vlurs2pr2#

尝试

  1. {
  2. firebase.storage()
  3. .child()
  4. .getDownloadURL().then()
  5. }
bsxbgnwa

bsxbgnwa3#

getdownloadurl方法已被否决。而是使用以下tasksnapshot.getmetadata().getreference().getdownloadurl().tostring()

svgewumm

svgewumm4#

这个 .getDownloadURL 不再可用,已弃用。从文档中 Task<Uri> 以及 getdownloadUrl(); 异步检索具有可撤销令牌的长寿命下载url。见文件

  1. @Override
  2. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  3. Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
  4. while (!urlTask.isSuccessful());
  5. Uri downloadUrl = urlTask.getResult();
  6. //continue with your code
zhte4eai

zhte4eai5#

  1. final StorageReference filePath = mImageStore.child("profile_images").child("full_image").child(userId + ".jpg");
  2. filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  3. @Override
  4. public void onSuccess(Uri uri) {
  5. //Bitmap hochladen
  6. uploadBitMap(uri.toString());
  7. }
  8. });
k4emjkb1

k4emjkb16#

你应该试试这个。理解它并尝试在你的系统中实现

  1. buttonSetup.setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View view) {
  4. String name = editText_name.getText().toString();
  5. if (!TextUtils.isEmpty(name) && mainImageURI != null) {
  6. final String user_id = firebaseAuth.getCurrentUser().getUid();
  7. progressBar_setup.setVisibility(View.VISIBLE);
  8. final StorageReference image_path = storageReference.child("profile_images").child(user_id + ".jpg");
  9. UploadTask uploadTask = image_path.putFile(mainImageURI);
  10. uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
  11. @Override
  12. public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
  13. if(!task.isSuccessful()){
  14. throw task.getException();
  15. }
  16. return image_path.getDownloadUrl();
  17. }
  18. }).addOnCompleteListener(new OnCompleteListener<Uri>() {
  19. @Override
  20. public void onComplete(@NonNull Task<Uri> task) {
  21. if (task.isSuccessful()){
  22. Uri downloadUrl = task.getResult();
  23. Log.i("The URL : ", downloadUrl.toString());
  24. }
  25. }
  26. });
  27. }
  28. }
  29. });
展开查看全部
2w3kk1z5

2w3kk1z57#

你不会得到图片下载网址现在使用
profileimageurl=tasksnapshot.getdownloadurl().tostring();此方法已弃用。
相反,您可以使用以下方法

  1. uniqueId = UUID.randomUUID().toString();
  2. ur_firebase_reference = storageReference.child("user_photos/" + uniqueId);
  3. Uri file = Uri.fromFile(new File(mphotofile.getAbsolutePath()));
  4. UploadTask uploadTask = ur_firebase_reference.putFile(file);
  5. Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
  6. @Override
  7. public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
  8. if (!task.isSuccessful()) {
  9. throw task.getException();
  10. }
  11. // Continue with the task to get the download URL
  12. return ur_firebase_reference.getDownloadUrl();
  13. }
  14. }).addOnCompleteListener(new OnCompleteListener<Uri>() {
  15. @Override
  16. public void onComplete(@NonNull Task<Uri> task) {
  17. if (task.isSuccessful()) {
  18. Uri downloadUri = task.getResult();
  19. System.out.println("Upload " + downloadUri);
  20. Toast.makeText(mActivity, "Successfully uploaded", Toast.LENGTH_SHORT).show();
  21. if (downloadUri != null) {
  22. String photoStringLink = downloadUri.toString(); //YOU WILL GET THE DOWNLOAD URL HERE !!!!
  23. System.out.println("Upload " + photoStringLink);
  24. }
  25. } else {
  26. // Handle failures
  27. // ...
  28. }
  29. }
  30. });
展开查看全部

相关问题