英文:
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 'dart:async';
import 'dart:html';
import 'package:mime/mime.dart' as mime;
Future<String?> getMimeType(File file) async {
// Create a slice for the header.
final slice = file.slice(0, mime.defaultMagicNumbersMaxLength);
// Read the file header's contents.
final fileReader = FileReader();
fileReader.readAsArrayBuffer(slice);
await fileReader.onLoad.first;
final header = fileReader.result as List<int>;
// Empty string for the file name because it's not relevant.
return mime.lookupMimeType('', headerBytes: header);
}
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论