Javascript-上传文件内容类型验证

Javascript - Upload file content type validation

本文关键字:类型 验证 文件 Javascript-      更新时间:2023-09-26

如何在使用JavaScript上传之前验证文件的内容类型我没有要求扩展验证。我想验证pdf,纯文本和MS word文件。

我使用django forms.ModelForm将文件上传小部件传递到html。我也无法在服务器端实现这一点。这个问题来了,

Django-上传的文件类型验证

也许吧,但它不会给你任何形式的安全,因为攻击者可以使用其他方式上传文件,从而绕过你的验证。

要使用扩展名检查文件类型(这非常不安全,因为操作起来非常容易),可以使用JavaScript。请参阅此问题:如何验证文件上载的文件类型?

[EDIT]经过一些谷歌搜索,我发现input元素有一个属性accept,它采用mime类型模式的列表。不幸的是,大多数浏览器都忽略了它(或者只使用它来调整文件选择对话框)。请参阅此问题:文件输入';接受';属性-它有用吗?

[EDIT 2]现在,文件API(请参阅"使用web应用程序中的文件")似乎是您真正不想使用文件扩展名的唯一方式。每个File实例都有一个包含mime类型的type属性。

但是这个API正在进行中,所以它不是在所有地方都可用。并且不能保证您会得到一个MIME类型(属性可以是"")。

因此,我建议这种方法:尝试File API。如果它不可用或type属性为空,请使用文件扩展名。

理论上,您可以使用File API读取文件。

然后,您需要用JavaScript为您关心的文件格式编写解析器,以检查它们是否匹配。