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

时间:2017-06-03 16:27:10

标签: 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”

我提出了几个基本的解决方案,例如使用regexp“如果mimetype以image / *开头将它放在'image_type'对象中”,但也许有更好/更快/可扩展的方法呢?另外,这种方法不考虑我对某些mimetype的要求。

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

1 个答案:

答案 0 :(得分:1)

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

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

用法:

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