如何从Firebase存储中的下载链接获取文件名?

时间:2019-08-07 07:49:06

标签: android firebase firebase-storage

我有图像视图,该图像视图使用下载链接使用Glide加载图像。代码如下:

如何从下载URL中获取存储在fire base存储中的文件名?

Glide.with(ct)
  .load(downloadurllink)
  .centerCrop();

placeholder(R.drawable.common_icon_dark)
  .into(holder.image);

6 个答案:

答案 0 :(得分:3)

如果网址采用这种格式:-

https://firebasestorage.googleapis.com/v0/b/art- track.appspot.com/o/images%2Fu1nffhbfdjsa%2FN11vSOYorUM2%2FImageName.JPG?alt=media&token=86081f67-9065-4a13-aa0b-14fab7d44bf3

然后将网址中的网址从2F拆分为2F,然后删除.JPG或.PNG

尝试一下:-

String url=" https://firebasestorage.googleapis.com/v0/b/art-                     
track.appspot.com/o/images%2Fu1nffhbfdjsa%2FN11vSOYorUM2%2FImageName.JPG? 
alt=media&token=86081f67-9065-4a13-aa0b-14fab7d44bf3" ;

print( url.split(RegExp(r'(%2F)..*(%2F)'))[1].split(".")[0]);

答案 1 :(得分:1)

有很多选择。最常用的两个是:

1。。您可以在Firebase Storage中使用 // Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference fileRef = storageRef.child("images/forest.jpg"); fileRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { String filename = storageMetadata.getName(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } }); 来从URL获取文件名。基本上,您创建一个Firebase数据引用,然后添加一个文件元数据侦听器,如下所示:

Firebase Database

此代码摘自我建议您查看的文档:https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2

2。。另一种选择是将带有名称的URL存储在 database.child("files").child("url") .addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { String name = dataSnapShot.getValue(String.class); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } } 中。这具有避免不必要的侦听器的优点。这意味着您可以使用单个值事件侦听器获取名称,而不必加载所有文件元数据。

0

这取决于您的实现方式。希望对您有所帮助:)

答案 2 :(得分:1)

我遇到了同样的问题,我使用正则表达式从下载URL中提取了文件名

%2..*%2F(.*?)\?alt

例如:如果您的下载URL是https://firebasestorage.googleapis.com/v0/b/art-track.appspot.com/o/images%2Fu1nffdGQ7QPLIMp7N11vSOYorUM2%2FCapture.JPG?alt=media&token=86081f67-9065-4a13-aa0b-14fab7d44bf3,则可以使用%2..*%2F(.*?)\?alt提取“ Capture.JPG”

答案 3 :(得分:1)

最简单的方法是使用引用方法:

let storage = Storage.storage()
let yourFirestoreURL = "https://firebasestorage.googleapis.com/v0/b/art-track.appspot.com/o/images%2Fu1nffdGQ7QPLIMp7N11vSOYorUM2%2FCapture.JPG?alt=media&token=86081f67-9065-4a13-aa0b-14fab7d44bf3"
let storageRef = storage.reference(forURL: yourFirestoreURL)

print(storageRef.name)

有关详细信息,请参阅此处的谷歌指南:https://firebase.google.com/docs/storage/ios/create-reference

答案 4 :(得分:0)

您可以使用name属性轻松获取文件名。 示例:

val httpsReference = FirebaseStorage.getInstance().getReferenceFromUrl("https://firebasestorage.googleapis.com/v0/b/art-                     
track.appspot.com/o/images%2Fu1nffhbfdjsa%2FN11vSOYorUM2%2FImageName.JPG? 
alt=media&token=86081f67-9065-4a13-aa0b-14fab7d44bf3")

Log.d(TAG, "filename: ${httpsReference.name}")

答案 5 :(得分:-1)

iOS解决方案!

d:\home\site\wwwroot