javascript - 根据 mimetype 按类型对文件进行排序的最佳方法

标签 javascript angularjs file sorting mime-types

这是我的挑战:

我有一个文件输入,可以使用它选择多个文件。我可以轻松访问每个选定文件的 mimetype,并在将它们添加到上传队列之前对其进行操作。我想做的是将这些文件分为 6 类。

我有这个对象:

files:{
   audio_type:[],
   video_type:[],
   image_type:[],
   pdf_type:[],
   text_type:[],
   other_type:[]
}

对于使用文件输入添加的每个文件,我希望能够将其放入上面的文件对象的正确类别节点中。

问题是,对于每个类别,我只接受某些 mimetype。例如,在“audio_type”中,仅应推送等于“audio/mpeg”或“audio/wav”的 mime 类型,如果文件的 mimetype 不是其中之一,则将其推送到“other_type”内

我想出了几个基本的解决方案,例如使用正则表达式“如果 mimetype 以 image/* 开头,则将其放入“image_type”对象中”,但也许有更好/更快/可扩展的方法来做到这一点?另外这个方法没有考虑我对某些mimetype的要求。

我这里有大局,我应该能够自己完成,但不是我认为的最干净的方式。

最佳答案

您可以使用对象作为文件类型的哈希表,例如

var types = { 
    "audio/mpeg": "audio_type",
    "audio/wav": "audio_type",
    // ...
    default:  "other_type"
}

用法:

upload.files[types[object.filetype] || types.default].push(object);

关于javascript - 根据 mimetype 按类型对文件进行排序的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44346128/

相关文章:

javascript - 使用自定义 angularjs 指令加载脚本

javascript - 无法将json导入Angular中的变量

java - 如何在 Linux 上用 Java 命名调用目录?

c++ - 无法添加二维数组的列和行

javascript - 在 PHP 中使用序列化 jQuery 传递多个参数

javascript - 将 JS ArrayBuffer 或 TypedArray 传递给 Emscripten,无需复制

javascript - HTML/Javascript-为什么我不能对表格内的 div 使用 offsetTop?

javascript - 选择开始忽略 Chrome 中文本区域中的新行/换行符

javascript - AngularJS 指令内的双向绑定(bind)适用于 ng-click,但不适用于 window.onclick

java - 另一个java.io.FileNotFoundException(系统找不到指定的文件)线程