【问题标题】:Android Firebase Storage: How to get file size from firebase storage file url before downloading it?Android Firebase 存储:如何在下载之前从 Firebase 存储文件 url 获取文件大小?
【发布时间】:2018-01-30 12:02:36
【问题描述】:

如何在下载之前从 Firebase 存储中获取文件大小?我想向用户显示文件大小,以便他们可以看到文件的确切大小。

我查看了https://firebase.google.com/docs/storage/android/download-files 以检查是否有任何方法可以在下载之前获取特定文件的大小。但我没有发现任何有用的东西。

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebase-cloud-messaging


    【解决方案1】:

    试试这个:

    StorageReference ref = storage.getReference();
    StorageReference reference = ref.child("images.jpg");
    
    reference.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() {
    @Override
    public void onSuccess(StorageMetadata storageMetadata) {
        Log.i("The size of the file is:", storageMetadata.getSizeBytes());
      }
    }).addOnFailureListener(new OnFailureListener() {
       @Override
       public void onFailure(@NonNull Exception exception) {
    
        }
    });
    

    使用getSizeBytes(),您将能够获得文件的大小。

    public long getSizeBytes ():

    返回 StorageReference 对象的存储大小(以字节为单位)

    public StorageMetadata ():

    创建一个 StorageMetadata 对象来保存 StorageReference 的元数据。

    欲了解更多信息,请查看:

    https://developers.google.com/android/reference/com/google/firebase/storage/StorageMetadata.html https://firebase.google.com/docs/storage/android/file-metadata

    【讨论】:

      【解决方案2】:

      如 Firebase 文档中所述,您可以通过 StorageReference getMetaData() 方法获取存储在 FirebaseStorage 上的文件的名称、大小和内容类型。根据 Firebase 文档,

      文件元数据包含通用属性,例如名称、大小和 contentType(通常称为 MIME 类型)除了一些之外 常见的有 contentDisposition 和 timeCreated。这个元数据可以 使用 getMetadata() 从 Cloud Storage 引用中检索 方法。

      这是如何访问存储在 FirebaseStorage 上的文件元数据的示例,

      StorageReference storageRef = storage.getReference();
      StorageReference forestRef = storageRef.child("images/forest.jpg");
      
      forestRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() {
          @Override
          public void onSuccess(StorageMetadata storageMetadata) {
              //here, storageMetadata contains all details about your file stored on FirebaseStorage
              Log.i("tag", "name of file: "+storageMetadata.getName());
              Log.i("tag", "size of file in bytes: "+storageMetadata.getSizeBytes());
              Log.i("tag", "content type of file: "+storageMetadata.getContentType());
          }
      }).addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception exception) {
              // Uh-oh, an error occurred!
              Log.i("tag", "Exception occur while gettig metadata: "+exception.toString());
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多