【问题标题】:How to get the extension of file in Flutter?如何在 Flutter 中获取文件的扩展名?
【发布时间】:2020-12-17 17:58:13
【问题描述】:

我的目标是通过代码识别文件的扩展名,例如给定文件是否为 .doc、.pdf、.svg 等。

一件事是通过文件名末尾的扩展名获取它。但是如果文件名中没有扩展名怎么办?

我尝试的另一件事是通过文件的初始字节来确定它。 例如:.docx 扩展文件以:[80,75,3,4,20,0,6, .....] 开头 在这种情况下,我只知道其中的一些。那么在哪里可以找到所有类型扩展的初始字节呢?

我认为第二个过程是一种有效的方法,但是还有其他确定文件扩展名的好方法吗?

【问题讨论】:

  • 可能相关,这有帮助吗?:stackoverflow.com/questions/58289813/…
  • 我刚才尝试了这个......但是即使这个包也根据文件名末尾提供的扩展名来确定它的类型............它当我从 pdf 的名称中删除扩展名并将名称末尾的扩展名从 .pdf 更改为 .xls 时出现异常......它相应地改变了输出。
  • 如果文件名中没有扩展名,您有两个选择:检查文件的标题信息(如果存在)并查看它是否与已知格式匹配,或者尝试打开在一些接受特定文件类型的程序或库中的文件,看看它是否有效。 (要查找不同文件类型的标头值,谷歌“X文件规范”,通常会出现。)
  • 此外,如果有人向您发送的文件没有文件扩展名、mime 类型、元数据文件或其他商定的了解文件类型的方式,第三种选择可能是跟踪它们在他们的办公室里打他们的脸,因为他们一开始就如此愚蠢地神秘或“高效”。

标签: file flutter dart file-management


【解决方案1】:

那么我在哪里可以找到所有类型扩展的初始字节?

你可以从这两个开始:

  1. https://en.wikipedia.org/wiki/List_of_file_signatures
  2. https://www.garykessler.net/library/file_sigs.html

但是那里有很多很多的文件类型...很有可能您永远无法找到它们全部

我只会在绝对必要时使用“Magic Bytes”,例如从一个考虑不周的数据库中挽救数据,该数据库有 blob 并且不跟踪每个 blob 中的文件类型......因为在结束时那天它仍然是完成工作的一种hacky方式。如果可能,请拒绝没有适当扩展名的文件类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2019-11-17
    • 2016-10-23
    • 2015-12-31
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多