我有图像视图,该图像视图使用下载链接使用Glide加载图像。代码如下:
如何从下载URL中获取存储在fire base存储中的文件名?
Glide.with(ct)
.load(downloadurllink)
.centerCrop();
placeholder(R.drawable.common_icon_dark)
.into(holder.image);
答案 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