栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用时限制文件格式 ?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用时限制文件格式 ?

严格来说,答案是 否定的 。开发人员 无法 阻止用户上传任何类型或扩展名的文件。

但是,仍然可以使用的 accept 属性

<input type ="file">
在OS的文件选择对话框中提供过滤器。例如,

<!-- (IE 10+, Edge (EdgeHTML), Edge (Chromium), Chrome, Firefox 42+) --><input type="file" accept=".xls,.xlsx" />

应该提供一种过滤掉.xls或.xlsx以外的文件的方法。尽管element的MDN页面

input
始终表示支持此功能,但令我惊讶的是,直到42版,此功能才在Firefox中对我不起作用。该功能在IE10 +,Edge和Chrome中有效。

因此,为了支持早于IE 42+的Firefox 42以及IE 10+,Edge,Chrome和Opera,我认为最好使用逗号分隔的MIME类型列表:

<!-- (IE 10+, Edge (EdgeHTML), Edge (Chromium), Chrome, Firefox) --><input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" />

[ Edge (EdgeHTML)行为:文件类型过滤器下拉列表显示此处提到的文件类型,但不是下拉列表中的默认类型。默认过滤器为

All files(*)
。]

您还可以在MIME类型中使用星号。例如:

<input type="file" accept="image/*" /> <!-- all image types --><input type="file" accept="audio/*" /> <!-- all audio types --><input type="file" accept="video/*" /> <!-- all video types -->

W3C 建议 作者在

accept
属性中同时指定MIME类型和相应的扩展名。因此, 最好的 方法是:

<!-- Right approach: Use both file extensions and corresponding MIME-types. --><!-- (IE 10+, Edge (EdgeHTML), Edge (Chromium), Chrome, Firefox) --><input type="file" accept=".xls,.xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" />

参考: MIME类型列表

重要:
使用

accept
属性仅提供一种在感兴趣的类型的文件中进行过滤的方法。浏览器仍然允许用户选择任何类型的文件。应该进行其他(客户端)检查(使用Javascript,一种方法是this),并且绝对
必须在服务器上使用文件扩展名及其二进制签名(ASP)使用MIME类型的组合
来验证 文件类型.NET,PHP,Ruby,Java)。
表以获取文件类型及其魔幻数字,以执行更强大的服务器端验证。


编辑: 也许使用其二进制签名的文件类型验证也可以在客户端使用HTML5FileAPI在Javascript上完成(而不仅仅是通过查看扩展名),但是仍然必须在服务器上验证文件,因为恶意用户仍然可以通过发出自定义HTTP请求来上传文件。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号