Javascript 如何检查Angular JS中上传文件的类型?

Javascript 如何检查Angular JS中上传文件的类型?,javascript,angularjs,Javascript,Angularjs,我在AngularJS中使用库。这里有过滤器,可以将文件类型设置为上传。 我是这样做的: uploader.filters.push({ name: 'imageFilter', fn: function (item /*{File|FileLikeObject}*/, options) { var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|'; return '|d

我在AngularJS中使用库。这里有
过滤器
,可以将文件类型设置为上传。 我是这样做的:

uploader.filters.push({
    name: 'imageFilter',
    fn: function (item /*{File|FileLikeObject}*/, options) {
    var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
         return '|doc|txt|docx|xml|pdf|djvu'.indexOf(type) !== -1;
   }
});
问题是,用户可以更改扩展文件,例如将
*.exe
更改为
*.pdf
,然后Angular uploader将文件添加到队列上载


以及如何在模板中显示信息,PDF和txt文件在哪里?

您已经确定了将文件上载到服务器的主要问题之一(恭喜!)

除了开玩笑和轻率,我还没有听说过在上传之前使用AngularJS验证文件的优雅或可靠的方法(正如您所知,AngularJS受到JavaScript本机提供的API的限制,因为AngularJS是一个JavaScript框架)

正如所指出的,您可以在上传之前检查客户端上文件的MIME类型

但是,由于许多原因,检查客户端上的文件存在限制,包括:

  • 用户可以更改有关文件的信息(例如,正如您所指出的,扩展名)
  • 某些浏览器对API的支持有限,这些API可能使您能够首先在客户端上检查文件
  • 这就是为什么您最好的选择是检查服务器上的文件

    一种方法(可能是多种方法之一)是使用PHP,并执行与建议类似的操作,即:

    看看或者。这些是内置的PHP 通过查看内容确定文件类型的命令 文件的一部分。同时检查以上两页上的评论,有 其他一些好的建议

    就我个人而言,我很幸运使用了一些基本上 系统(“file-bi$uploadedfile”),但我不确定这是否是最好的 方法


    依靠服务器(而不是客户端)检查文件的好处是
    您只受到服务器可以使用的API(客户端用户无法控制)的限制。

    没有真正的方法在客户端验证文件,因为用户可以通过禁用JavaScript轻松“欺骗”系统,从输入中删除
    accept
    属性,等等。您可以提出什么建议?我将使用PHP后端文件验证(),并让
    accept
    属性仅接受您想要的文件类型()。人们仍然(自愿)使用PHP吗?