2013-12-13 53 views
1

我只需要为html文件字段设置特定的文件扩展名。如何在html文件类型中设置自定义扩展

<input type="file" id="image1" accept=".jpg,.png,.gif" /> 

从上面的代码工作良好,但它也显示所有类型和其他的一些推广

,但我想禁用或不显示extention列表。

能否请你帮我,我怎么能解决这个问题

感谢

回答

0

你不应该写在接受属性的扩展。相反,你应该使用MIME类型:

<input type="file" id="image1" accept="image/jpeg,image/gif,image/png" /> 

即使这样,你可能会得到对话框中的“所有文件”。事情就是这样 - 如果你真的关心扩展,你将不得不检查服务器。当然,在实践中,您可能需要检查内容而不是扩展名(可以随意更改)。

+0

这是不正确的。 http://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file)。您可以指定文件类型或MIME类型或两者。 –

+0

我知道这件事,但我也想禁用对话框打开部分中​​的“所有数据类型”。我想显示我的自定义延伸。 – harshboss

+0

@harshboss:对不起,你被卡住了。但是,您可以在JavaScript中验证文件名 - 在提交按钮上,检查输入文件名,并说您只能上传* .wtv。 – Luaan

1

你不能,你也不想。

您应该总是确保用户上载的数据在服务器端以所需的格式存在。在客户端指定文件扩展名非常棒,因为它可以让用户知道他们应该上传哪些文件,但实际上并没有什么能够阻止某人将其“scaryvirus.exe”文件的名称和扩展名更改为无害的文件,如“cutekitten巴纽”。你永远不应该信任用户的输入。

input[type="file"] section of the HTML5 specification

扩展往往含混不清(例如有使用修改“.dat”扩展格式的无数,而用户通常可以很容易地重新命名他们的文件有“ .doc“扩展名,即使它们不是Microsoft Word文档),MIME类型往往是不可靠的(例如,许多格式没有正式注册类型,实际上许多格式使用多种不同的MIME类型标记)。提醒作者,像往常一样,应该谨慎对待从客户那里收到的数据,因为即使用户不是敌对的,并且用户代理完全服从了接受属性的要求,它也可能不是预期的格式。

规范没有定义删除“所有文件”或其他选项可能出现在用户代理的文件上传UI中的能力。也就是说,并不是所有的用户代理都会支持accept属性。

相关问题