如何在html文件类型中设置自定义扩展

时间:2013-12-13 10:42:10

标签: html file-upload

我只需要为html文件字段设置特定的文件扩展名。

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

从上面的代码中它运行良好,但它也显示所有类型和其他扩展

但我想禁用或不显示在扩展名单中。

请帮助我,我该如何解决这个问题

感谢

2 个答案:

答案 0 :(得分:1)

你不能,也不想。

您应该始终确保用户上传的数据在服务器端具有所需的格式。在客户端指定文件扩展名很棒,因为它可以让用户知道他们应该上传哪些文件,但实际上没有什么可以阻止某人将他们的“scaryvirus.exe”文件的名称和扩展名更改为看似无辜的东西,如“cutekitten”巴纽”。你永远不应该相信用户输入。

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

  

扩展程序往往含糊不清(例如,有无数种格式使用“.dat”扩展名,用户通常可以非常轻松地将其文件重命名为“.doc”扩展名,即使它们不是Microsoft Word文件)和MIME类型往往不可靠(例如,许多格式没有正式注册的类型,并且许多格式实际上使用许多不同的MIME类型标记)。提醒作者,与往常一样,从客户端收到的数据应谨慎对待,因为即使用户没有敌意且用户代理完全遵守接受属性的要求,也可能不是预期的格式。

规范未定义删除“所有文件”或用户代理的文件上载UI中可能存在的任何其他选项的功能。也就是说,并非所有用户代理都支持accept属性。

答案 1 :(得分:0)

您不应该在accept属性中编写扩展名。相反,您应该使用MIME类型:

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

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