2

如何在使用 JavaScript 上传之前验证文件的内容类型?我不是在问扩展验证。我想验证 pdf、纯文本和 MS word 文件。

我正在使用 djangoforms.ModelForm将文件上传小部件传递给 html。我在服务器端也无法做到这一点。就是这个问题,

Django - 上传文件类型验证

4

2 回答 2

2

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

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

[编辑]经过一番谷歌搜索后,我发现该input元素具有一个属性,该属性accept采用一系列 mime 类型模式。不幸的是,大多数浏览器都会忽略它(或仅使用它来调整文件选择对话框)。看到这个问题:文件输入“接受”属性——有用吗?

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

但是这个 API 正在开发中,所以它并不是在任何地方都可用。并且不能保证您将获得 MIME 类型(属性可以是"")。

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

于 2012-08-02T08:26:49.447 回答
2

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

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

于 2012-08-02T08:24:49.307 回答