Dart 从 UInt8List 获取扩展

2024-05-18

我正在使用该包图像选择器 https://pub.dev/packages/image_picker接受来自用户的图像。这会产生 PickedFile 和字节数组。由于图像随后被上传,我想知道如何从字节数组中猜测 mime 类型。

PickedFile image =
    await _picker.getImage(source: ImageSource.gallery, imageQuality: 50);
Uint8List data = await image.readAsBytes();

package:mime https://pub.dev/packages/mime has a lookupMimeType https://pub.dev/documentation/mime/latest/mime/lookupMimeType.html可以从文件扩展名或内容中的魔术字节推断 MIME 类型的函数。截至撰写本文时,它应该支持检测以下内容:

  • application/pdf
  • application/postscript
  • image/gif
  • image/jpeg
  • image/png
  • image/tiff
  • video/mp4
  • model/gltf-binary

(See https://github.com/dart-lang/mime/blob/master/lib/src/magic_number.dart https://github.com/dart-lang/mime/blob/master/lib/src/magic_number.dart对于当前开箱即用支持的类型列表。)

然后你可以使用extensionFromMime https://pub.dev/documentation/mime/latest/mime/extensionFromMime.html获取文件扩展名。

Example:

var data = await image.readAsBytes();
var mime = lookupMimeType('', headerBytes: data);
var extension = extensionFromMime(mime);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 从 UInt8List 获取扩展 的相关文章

随机推荐

  • 使用 Docker Desktop 调试本地部署到 Kubernetes 的应用程序的最佳方法是什么?

    我有使用 Docker 开发相对复杂的应用程序的经验 使用 Visual Studio 2019 调试应用程序非常容易 我只是将 docker compose yaml 设置为启动应用程序并开始调试 是否可以使用 Docker Deskto
  • AWS StepFunction CDK 结果路径设置为 null

    我无法找到一种方法来指定 null 到结果路径 正如这里指出的 https docs aws amazon com step functions latest dg input output resultpath html https do
  • N层架构设计关注点分离

    我意识到已经有很多关于 n 层设计的帖子 这可能是我思考过度和兜圈子 但我自己现在很困惑 希望从社区得到一些澄清 我试图将我创建的项目 并且一开始就没有很好地设计架构 分成不同的层 每个层都在自己的项目中 UI 业务对象 逻辑 商业 DAL
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • UICollectionView 拖放文件夹创建

    我正在使用 UICollectionView 创建 iOS 画廊应用程序 我希望用户能够拖放图像来重新排序图库并创建文件夹 类似于 iPhone 上的主屏幕 我发现了以下内容tutorial http nshint io blog 2015
  • 根据 .NET Core 2.1 中的更改重新加载 Serilog JSON 配置

    我目前正在开发 ASP NET Core 2 1 应用程序 并使用 Serilog 进行日志记录 我想在运行时为我的 Serilog 实现重新加载应用程序设置文件 我的目标是在运行时更改日志级别 例如我写入minimumLevelDebug
  • 修改异步不工作

    我正在尝试在发布后编辑嵌入的消息 我试图使用文档中的这个示例 但它不起作用 https discord foxbot me docs api Discord MessageProperties html https discord foxb
  • Symfony2 自定义密码编码器(bcrypt)

    我已经编写了自己的密码编码器 它实现了PasswordEncoderInterface class BCryptPasswordEncoder implements PasswordEncoderInterface protected en
  • PHP 错误:“无法通过引用传递参数 2”

    我只是需要有关这个 PHP 错误的帮助 我不太明白 致命错误 无法在第 13 行 web stud openup inactivatesession php 中通过引用传递参数 2
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 使用 SDL2 渲染精灵

    我对游戏开发非常陌生 我正在尝试使用 SDL 在窗口上移动精灵 我正在使用http gamedevgeek com tutorials moving sprites with sdl http gamedevgeek com tutoria
  • 捕获而不尝试编译成功

    以下代码使用 g 版本 5 1 0 成功编译 注意catch没有对应的try在成员函数中foo bar 我想知道这种语法是否合法 如果合法 它会产生什么影响 struct foo void bar catch int main foo f
  • Quartz 与“反应式扩展”

    我正在寻找 C 的调度库 很长一段时间以来 我认为 唯一 的选择是 Quartz NET 它非常强大并且工作得很好 但是当我发现 Reactive Extensions RX http msdn microsoft com en us da
  • 如何使用C#与Chrome(Chrome扩展)通信?

    我想创建一个可以在我的 C 应用程序和扩展之间进行通信的桥梁 这是我真正想要的解释 我创建了一个扩展 它将获取 HTML 元素的详细信息 但每次启动 Chrome 时都会启动 除了这样做之外 有什么方法可以向我的 chrome 扩展发送消息
  • 将 ftransform 与折叠 R 包中的 fgroup_by 一起使用

    我正在尝试重现以下输出dplyr代码与R包裹collapse dplyr Code library tidyverse starwars gt select name mass species gt group by species gt
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • 实体框架 - 绑定 WPF 树视图控件

    在服务类别表中 ParentCategoryId 是 ServiceCategoryId 它是父类别 我的类别可以有第 n 级层次结构 因此我需要使用树视图控件来呈现它 我怎样才能做到这一点 Thanks 你可以使用分层数据模板 http
  • gem 无法访问 ruby​​gems.org

    我有一个带有 Rackspace 的服务器 用于一些 Ruby 站点 当我尝试时bundle install在一个新网站上我得到 Retrying download gem from http rubygems org due to err
  • Dart 从 UInt8List 获取扩展

    我正在使用该包图像选择器 https pub dev packages image picker接受来自用户的图像 这会产生 PickedFile 和字节数组 由于图像随后被上传 我想知道如何从字节数组中猜测 mime 类型 PickedF