input file accept限制文件上传类型

input file accept限制文件上传类型一、需求上传文件只允许上传doc、docx、jpg、png、gif和pdf格式的文件,需要在前后端进行双重限制二、前端实现1、前端限制通过inputfileaccept属性实现,在accept中以逗号分隔开【图一】,便可以实现选择文件时,默认只可选择设定格式的文件【图二】,需要说明的是,MIME格式image/jpeg对应.jpg,.jpeg等几种格式,不能达…

大家好,又见面了,我是你们的朋友全栈君。

一、需求

    上传文件只允许上传doc、docx、jpg、png、gif和pdf格式的文件,需要在前后端进行双重限制

二、前端实现

1)前端限制

     通过input file accept属性实现,在accept中以逗号分隔开【图一】,便可以实现选择文件时,默认只可选择设定格式的文件【图二】,需要说明的是,MIME格式image/jpeg对应.jpg,.jpeg等几种格式,不能达到只单独限制jpg格式的,js再次过滤提示即可。

图一

<input type="file" name="attach_path" value="" accept="application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/jpeg,image/png,image/gif,application/pdf">

图二input file accept限制文件上传类型

2)【图二】中可以看到,默认只选择accept中自定义格式的文件,下拉中依旧可以选择所有文件,如果需要前端更严密的控制,可以通过  js 再次验证处理;

不使用上传附件插件,使用通用的input file方式添加js验证格式方法:

$('input[type="file"]').live("change", function () {
	var file = this.files && this.files [0];
	if (file) {
		//判断文件格式
		var index= file.name.lastIndexOf(".");//获取最后一个.的位置
		var ext = file.name.substr(index+1);//获取后缀
		var pattern = /^(doc|docx|jpg|jpeg|png|gif|xls|xlsx|txt|html|htm|zip|rar|pdf)$/;
		if(!pattern.test(ext))
		{
			alert("文件格式不支持");
			return false;
		}
		var filename = file['name'];
		var row = $("<li>", {class: "row"});
		row.append('<span class="path-name">' + filename + '</span>');
		row.append('<a href="javascript:;" class="js-del-row el-icon-delete"></a>');
		$(this).parent().prepend('<input type="file" class="hide">');
		this.name = "attach[]";
		row.append(this); 
	}
});

3)快速查看上传文件的mine类型

1、方法1:

        后台直接打印var_dump($_FILES);exit;打印信息中即可看到

        input file accept限制文件上传类型

2、方法2:

前端打印

$('input[type="file"]').live("change", function () {
	var file = this.files && this.files [0];
	console.log(file)
});

 input file accept限制文件上传类型

 3、遇到的问题

百度查到.rar对应的mine类型为application/x-rar-compressed,但是写入accept中后,上传文件窗口并未显示rar的限制;
通过后端打印rar的类型为application/octet-stream,写入accept中并未显示rar的限制;

input file accept限制文件上传类型

通过前端打印rar的类型为空,最后不得已使用name获取后缀名称进行的文件格式验证

input file accept限制文件上传类型

 

 

4)input file accept的兼容情况,此图仅用来说明accept有兼容情况,随着时间的推移,兼容情况有变,请自行注意哦。

input file accept限制文件上传类型

5)input file accept中限制的格式为MIME格式,根据需求添加对应的MIME格式即可,不同的应用程序支持不同的 MIME 类型,所以每个MIME设置后对应的一个或者多个格式,以最终添加文件时显示的自定义文件类型为准。
     MIME 参考手册

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160962.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux解压zip中文乱码(绝对管用)

    Linux解压zip中文乱码(绝对管用)原文链接

    2022年5月15日
    46
  • painless语法入门[通俗易懂]

    painless语法painless基础结构”script”:{“lang”:”…”,”source”|”id”:”…”,”params”:{…}}lang:定义脚本使用的语言,默认painlesssource,id:脚本的主体,source后面跟着内联的脚本代码,id后面跟着脚本的id,具体代码存在于脚本id对应的代码中params:定义一些变量的值,使用params可以减少脚本的编译次数.因为如果

    2022年4月18日
    452
  • 服务器安装linux系统安装教程_linux服务器重装系统

    服务器安装linux系统安装教程_linux服务器重装系统一、linux镜像的刻录1.首先打开电脑上面任意浏览器(IE、MicrosoftEdge、chrome、Firefox),输入网址https://www.centos.org/我们可以看到如下界面选择立即获取centos下载最新的安装镜像,复制下载链接(http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64…

    2022年10月5日
    3
  • 5分钟搞懂MySQL – 行转列

    5分钟搞懂MySQL – 行转列  MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰到了你,让你为之一愣~但当你看到本文后,这个问题就不在是问题,及时收藏,以后谁再问你这个问题,直接甩他脸上,粘贴即用。

    2022年5月1日
    40
  • 国内 Go 代理汇总

    国内 Go 代理汇总golang国内的代理总是一个很头疼的问题,这里汇总一下国内几个可用的代理,到时候有些包下不下来就换几个代理多试试代理1:阿里云GoModule代理传送门:https://mirrors.aliyun.com/goproxy/简介gomodule公共代理仓库,代理并缓存go模块。你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建使用帮助使用go1…

    2022年7月26日
    9
  • 国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房设计标准GB50174

    国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房设计标准GB501748电气8.1供配电8.1.1电子信息系统机房用电负荷等级及供电要求应根据机房的等级,按现行国家标准《供配电系统设计规范》GB50052及本规范附录A的要求执行。8.1.2电子信息设备供电电源质量应根据电子信息系统机房的等级,按本规范附录A的要求执行。8.1.3供配电系统应为电子信息系统的可扩展性预留备用容量。8.1.4户外供电线路不宜采用架空方式敷设。当户外供电线路采用具有金属外护套的电缆时,在…

    2022年10月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号