如何在使用JavaScript上传之前验证文件的内容类型? 我不是要求扩展验证。我想验证pdf,纯文本和MS word文件。Javascript - 上传文件内容类型验证
我正在使用django forms.ModelForm
将文件上传部件传递给html。我无法在服务器端实现这一点。这里是一个问题,
Django - Uploaded file type validation
如何在使用JavaScript上传之前验证文件的内容类型? 我不是要求扩展验证。我想验证pdf,纯文本和MS word文件。Javascript - 上传文件内容类型验证
我正在使用django forms.ModelForm
将文件上传部件传递给html。我无法在服务器端实现这一点。这里是一个问题,
Django - Uploaded file type validation
也许但它不会给你任何形式的安全,因为攻击者可以使用其他方式上传文件,从而绕过你的验证。
要使用扩展名检查文件类型(这是非常不安全的,因为它很容易操纵它),您可以使用JavaScript。看到这样的问题:How do I Validate the File Type of a File Upload?
[编辑]一些googling后,我发现,input
元件具有需要的mime类型模式的列表的属性accept
。不幸的是,大多数浏览器忽略它(或仅用它来调整文件选择对话框)。看到这个问题:File input 'accept' attribute - is it useful?
[编辑2]眼下,似乎文件API(见“Using files from web applications”)是你的它,你真的不希望使用的文件扩展名唯一途径。每个File
实例都有一个type
属性,其中包含MIME类型。
但是,此API正在进行中,因此无法在任何地方使用。并且不能保证你会得到一个MIME类型(该属性可以是""
)。
所以我建议这种方法:试试File API。如果它不可用或type
属性为空,请使用文件扩展名。
从理论上讲,你可以使用File API读取这些文件。
然后,您需要在JavaScript中为您关心的文件格式编写解析器,以检查它们是否匹配。
+1,因为当前IE不支持这种情况。 – Babu 2012-08-02 08:41:00
注意:您不必解析文件;如果你有一个File对象,你可以阅读它的'type'属性:https://developer.mozilla.org/en/Using_files_from_web_applications/也就是说,File API是HTML 5并且正在进行中。 – 2012-08-02 08:48:04
@AaronDigulla - 这需要相信浏览器才能正确确定文件类型。我期望浏览器问底层操作系统和Windows(至少)使用文件扩展名。 – Quentin 2012-08-02 09:35:34
你问在客户端发送到服务器之前,如何识别客户端上的文件类型? – 2012-08-02 08:26:27
是的,但我知道扩展验证。 – Babu 2012-08-02 08:41:43