我在Angular JS中使用库Angular File Uploader。以下是filters
,允许将文件类型设置为上传。
我这样做:
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上传程序会将文件添加到队列上传。
我如何在模板中显示信息哪里是PDF和txt文件?
答案 0 :(得分:1)
您已经确定了将文件上传到服务器的主要问题之一(恭喜!):)
除了开玩笑和轻浮之外,我还没有听说过在上传前使用AngularJS验证文件的优雅或可靠的方法(如你所知,AngularJS受到JavaScript本身提供的API的限制,因为AngularJS是一个JavaScript框架。)
如this answer to "How to check file MIME type with javascript before upload?"所述,您可以在上传之前检查客户端上文件的MIME类型。
但是,由于多种原因检查客户端上的文件存在限制,包括:
这就是为什么最好的办法是检查服务器上的文件。
一种方法(在很多可能的方法中)是使用PHP,并执行类似于this answer to "How to check file types of uploaded files in PHP?"建议的方法,即:
查看mime_content_type或Fileinfo。这些都是内置的PHP 通过查看内容来确定文件类型的命令 的文件。另外还要查看上面两页的评论 其他一些好的建议。
我个人幸运地使用了本质上的东西 system(“file -bi $ uploadedfile”),但我不确定这是不是最好的 方法
依靠服务器(而不是客户端)检查文件的优势您只受服务器可以使用的API(客户端)的限制用户无法控制。)