获取文件对象的 MIME 类型

huangapple go评论48阅读模式
英文:

Get MIME type of File object

问题

我有一个 dart:html 中的 File 对象,我想从文件内容中确定 MIME 类型,而不是从文件扩展名确定。

英文:

I have a dart:html File object and I want to determine the MIME type from the file contents rather than the extension.

答案1

得分: 0

你可以使用mime包lookupMimeType函数,并通过在File上调用slice方法来传递headerBytes,同时还可以使用defaultMagicNumbersMaxLength。以下是代码部分:

import 'dart:async';
import 'dart:html';
import 'package:mime/mime.dart' as mime;

Future<String?> getMimeType(File file) async {
  // 为文件头部创建一个切片。
  final slice = file.slice(0, mime.defaultMagicNumbersMaxLength);

  // 读取文件头部的内容。
  final fileReader = FileReader();
  fileReader.readAsArrayBuffer(slice);
  await fileReader.onLoad.first;
  final header = fileReader.result as List<int>;

  // 因为文件名与此无关,所以返回空字符串。
  return mime.lookupMimeType('', headerBytes: header);
}
英文:

You can use the mime package's function lookupMimeType and pass in the headerBytes by calling slice on the File with defaultMagicNumbersMaxLength

import &#39;dart:async&#39;;
import &#39;dart:html&#39;;
import &#39;package:mime/mime.dart&#39; as mime;

Future&lt;String?&gt; getMimeType(File file) async {
  // Create a slice for the header.
  final slice = file.slice(0, mime.defaultMagicNumbersMaxLength);

  // Read the file header&#39;s contents.
  final fileReader = FileReader();
  fileReader.readAsArrayBuffer(slice);
  await fileReader.onLoad.first;
  final header = fileReader.result as List&lt;int&gt;;

  // Empty string for the file name because it&#39;s not relevant.
  return mime.lookupMimeType(&#39;&#39;, headerBytes: header);
}

</details>



huangapple
  • 本文由 发表于 2023年3月7日 23:36:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/75664049.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定