如何过滤由Java / Typescript中的目录选择器选择的FileList对象?

Sha*_*ain 5 javascript typescript angular

我正在尝试从FileList对象过滤或删除某些文件。我已经得到一个FileList对象形式的目录选择器。

<input type="file" accept="image/*" webkitdirectory directory multiple>
Run Code Online (Sandbox Code Playgroud)

在我的.ts文件中:

public fileChangeListener($event: any) {
 let selectedFiles=$event.target.files; //Object of Filelist
}
Run Code Online (Sandbox Code Playgroud)

selectedFileList包含不同类型的文件,例如图像/ jpg,图像/ png,应用程序/ javascript,应用程序/ pdf等。我想获取仅包含图像类型文件的FileList对象。如何获取?

注意:HTML输入元素中的accept =“ image / *”在这里不起作用。

{
lastModified:1521624250148,
lastModifiedDate:Wed Mar 21 2018 15:24:10 GMT+0600 (+06) {},
name:"rxlnn70l.bmp",
size:814138,
type:"image/bmp",
webkitRelativePath:"second/rxlnn70l.bmp",
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中 error: files.slice is not a function

gur*_*372 6

使用蔓延运营商 ...转换FileListArray并通过检查其是否过滤相同type包含子文'image'

   var files = e.target.files;
   files = [...files].filter( s => s.type.includes("image") )
Run Code Online (Sandbox Code Playgroud)

演示版

   var files = e.target.files;
   files = [...files].filter( s => s.type.includes("image") )
Run Code Online (Sandbox Code Playgroud)
document.querySelector( "[type='file']" ).addEventListener( "change", function(e){
   var files = e.target.files;
   files = [...files].filter( s => s.type.includes("image") )
   console.log(files);
})
Run Code Online (Sandbox Code Playgroud)

编辑

如果您的浏览器不支持传播运算符,请使用以下之一

files = Array.from(files).filter( function(s){ 
    return s.type.includes("image") ;
});
Run Code Online (Sandbox Code Playgroud)

要么

files = [].slice.call(files).filter( function(s){ 
    return s.type.includes("image") ;
});
Run Code Online (Sandbox Code Playgroud)