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 参考手册

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 多指标评价方法-变异系数法的pathon实现

    多指标评价方法-变异系数法的pathon实现文章的目的我们经常需要对一些企业、部门、甚至某个城市进行评价,但是用一个指标不可能全面反映这些复杂单元,所以我们经常会用很多指标进行评价,这些指标单位不统一,大小数量级有时候相差很多,把这些复杂的指标最后综合起来成为一个指数,这就是综合评分的本质。综合评价的方法有很多,主要有三类:主观综合评价、客观综合评价、主客观混合评价。本文主要是讲述客观综合平台里的变异系数法。本文有两个目标:各个指标权重的确定多个单元的排序(竞争力排名、大学排名、发展水平、幸福排名、税负排名诸如此类)变异系数法的计算过程每

  • MySQL mysqldump数据导出详解

    MySQL mysqldump数据导出详解

  • 史上最全的IDEA快捷键总结

    史上最全的IDEA快捷键总结现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。

  • 今儿下午疲惫极了_形容疲惫至极的诗句

    今儿下午疲惫极了_形容疲惫至极的诗句回家的公车上人也特别的多,春天来了,气温渐温,街上的颜色也丰富起来,我一路的走,一路的观望,看着一张张的笑脸,我也一路的想,想我爱的人和爱我的人,不觉得走神了。下车没两步,我摔了一交,结结实实的。手中的电脑包抛了老远,我一下子倒在了路边,脑子嗡响了一下,暂时的记忆就没了。大约有那么两三秒,也许是我摔倒的动静太大了,感觉周围的目光都在朝我这边看,一时间的尴尬,没顾得上身上的土,站起来就往住的方向猛走

  • ubuntu 卸载软件命令及方法[通俗易懂]

    ubuntu 卸载软件命令及方法[通俗易懂]1、如果是从UbuntuSoftwareCenter安装的,进入center,找到那个软件,很明显会有“卸载”的按钮;2、如果是tar、gz、zip之类解压就能用,免安装的,直接删除;3、如果是自己下载的deb包安装,或者通过apt-getinstall安装、或者通过添加ppa安装,使用sudoapt-getautoremovesoftware-name来卸载,为了一次卸干净,可以

  • Exception in thread “main” java.lang.SecurityException: Prohibited package name: java.io.test

    Exception in thread “main” java.lang.SecurityException: Prohibited package name: java.io.testException in thread “main” java.lang.SecurityException: Prohibited package name: java.io.test

发表回复

您的电子邮箱地址不会被公开。

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