【问题标题】:how do I check the file size of a video in flutter before uploading如何在上传之前检查视频的文件大小
【发布时间】:2019-04-01 20:14:41
【问题描述】:

我想将视频文件上传到我的云存储,但我想在上传前检查视频文件的大小。如何做到这一点

【问题讨论】:

标签: dart flutter firebase-storage


【解决方案1】:

如果你有文件的路径,可以使用dart:io

var file = File('the_path_to_the_video.mp4');

你可以使用:

print(file.lengthSync()); 

print (await file.length());

注意:返回的大小为bytes

【讨论】:

  • 当我尝试时我得到了这个:hashcode:844733706 Type (FileSystemException) "Cannot retrieve length of file" path:"File: '/storage/emulated/0/WhatsApp/Media/WhatsApp Video/VID -20181028-WA0018.mp4'"
  • 它会以字节为单位返回大小?
  • 是的,长度以字节为单位。
  • 如果您使用的是返回 PickedFile 而不是 File 的最新 ImagePicker。 formatBytes(await File(image.path).lengthSync(), 2)
【解决方案2】:

// 定义函数

getFileSize(String filepath, int decimals) async {
    var file = File(filepath);
    int bytes = await file.length();
    if (bytes <= 0) return "0 B";
    const suffixes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
    var i = (log(bytes) / log(1024)).floor();
    return ((bytes / pow(1024, i)).toStringAsFixed(decimals)) + ' ' + suffixes[i];  
}

// 如何调用函数

print(getFileSize('file-path-will-be-here', 1));

// 输出将是如下字符串:

97.5 KB

这对我有用。我希望,这也会对你有所帮助。非常感谢您提出问题。

【讨论】:

  • 谢谢卡姆莱什。这几乎与文件的实际大小相匹配。在控制台中显示为 2.72 MB,在文件系统中显示为 2.9 MB。
  • @FlorentinLupascu 我不确定,但这可能会有所不同,因为 1 MB = 1000 KB 而不是 1024 KB。
  • 这是一个非常好的功能!! +1
  • @Kamlesh 我已经告诉过你很多次要删除你留在this post 上的不相关的 cmets 以及我的其他帖子,如果你现在不这样做,我将不得不遗憾地标记你就这样。
  • @Kamlesh 我们可以在文件夹中使用它吗?
【解决方案3】:

这对我有用。

final file = File('pickedVid.mp4');            
int sizeInBytes = file.lengthSync();
double sizeInMb = sizeInBytes / (1024 * 1024);
if (sizeInMb > 10){
    // This file is Longer the
}

【讨论】:

    【解决方案4】:

    如果您使用的是最新的 ImagePicker 和 xFile 类型,那么,

     final XFile? photo = await _picker.pickImage(source: ImageSource.camera);
      print(File(photo.path).lengthSync());
    

    将以字节为单位返回文件大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      相关资源
      最近更新 更多