如何在使用 JavaScript 上传之前验证文件的内容类型?我不是在问扩展验证。我想验证 pdf、纯文本和 MS word 文件。
我正在使用 djangoforms.ModelForm
将文件上传小部件传递给 html。我在服务器端也无法做到这一点。就是这个问题,
如何在使用 JavaScript 上传之前验证文件的内容类型?我不是在问扩展验证。我想验证 pdf、纯文本和 MS word 文件。
我正在使用 djangoforms.ModelForm
将文件上传小部件传递给 html。我在服务器端也无法做到这一点。就是这个问题,
也许可以,但它不会为您提供任何形式的安全性,因为攻击者可以使用其他方式上传文件,从而绕过您的验证。
要使用扩展名检查文件类型(这是非常不安全的,因为它很容易操作),您可以使用 JavaScript。请参阅此问题:如何验证文件上传的文件类型?
[编辑]经过一番谷歌搜索后,我发现该input
元素具有一个属性,该属性accept
采用一系列 mime 类型模式。不幸的是,大多数浏览器都会忽略它(或仅使用它来调整文件选择对话框)。看到这个问题:文件输入“接受”属性——有用吗?
[编辑 2]现在,文件 API(请参阅“使用 Web 应用程序中的文件”)似乎是您真的不想使用文件扩展名的唯一方法。每个File
实例都有一个type
包含 mime 类型的属性。
但是这个 API 正在开发中,所以它并不是在任何地方都可用。并且不能保证您将获得 MIME 类型(属性可以是""
)。
所以我建议这种方法:试试 File API。如果它不可用或type
属性为空,请使用文件扩展名。
理论上,您可以使用File API来读取文件。
然后,您需要用 JavaScript 为您关心的文件格式编写解析器,以检查它们是否匹配。