asdwsx1234 / get-real-file-type

获取文件真实的mimeType并与目标格式进行比较的工具库

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

get-real-file-type

获取文件真实的 mimeType 并与目标格式进行比较的工具库

安装

$ npm install get-real-file-type

用法

import { TypeFile } from 'get-real-file-type';

const fileInput = document.createElement('input');
fileInput.setAttribute('type', file);

fileInput.onchange = function(e) {
  const file = e.target.files[0];
  const typeFile = new TypeFile(file); // 这里支持传入File实例/包含File实例的对象/Uint8Array
  typeFile.onParseEnd = function() {
    if(this.isType('video/mp4')) {
      // TODO Suc
    }

    if(this.isType(['video/mp4', 'video/flv', 'video/vnd.avi'])) {
      // TODO Suc
    }
  };
  typeFile.onParseError = function() {
    // TODO Error
  }
  typeFile.start();
}

API

TypeFile(input)

input参数需要是一个浏览器的File实例,或者是一个object包含File实例,或者是一个Uint8Array

File实例最终也会转化为Uint8Array

该函数会返回一个TypeFile实例:

start()

start方法调用后,文件就开始解析。 看解析的结果来调用onParseEndonParseError

onParseEnd()

onParseEnd会在start方法执行后,文件解析成功后立即调用,此时该实例已经初始化完成。

初始化完成后会给实例初始化以下属性:

  • ext - 根据文件名解析的后缀(只传入 Uint8Array 为 null)
  • mime - 浏览器通过文件名后缀解析的 mimeType(只传入 Uint8Array 为 null)
  • realExt - 真实的文件后缀
  • realMime - 真实的文件的 mimeType

识别不出的属性也为 null

onParseError(reason)

onParseError会在start方法执行后,文件解析失败后立即调用。 默认第一个参数是错误的原因

isType(targetMimeType, compareType?)

targetMimeType可以传入一个字符串,或者一个字符串数组,用于和实例中的文件属性进行比较。

compareType默认为TypeFile.COMPARE_TYPE.REAL_FIRST,也就是0,优先比较真实的文件属性。

返回值为Boolean

TypeFile.COMPARE_TYPE

  • REAL_FIRST: 0 - 表示优先比较真实的文件信息
  • BROWSER_FIRST: 1 - 表示优先比较浏览器获取的文件信息
  • REAL_ONLY: 2 - 表示只比较真实的文件信息
  • BROWSER_ONLY: 3 - 表示只比较浏览器获取的文件信息

browserMimeMapping

由自己维护的浏览器获取的 mimeType 的映射表,来源点击以下查看,以后可能会补充

realMimeMapping

file-type库维护的真实文件 mimeType 映射表

  • realMimeMapping['video/mp4']
  • realMimeMapping['audio/mpeg']
  • ...

realExtMapping

file-type库维护的真实文件后缀映射表

  • realExtMapping['mp4']
  • realExtMapping['mp3']
  • realExtMapping['aac']
  • ...

About

获取文件真实的mimeType并与目标格式进行比较的工具库

License:MIT License


Languages

Language:TypeScript 93.0%Language:JavaScript 7.0%