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)
上一篇 2022年7月17日 下午11:00
下一篇 2022年7月17日 下午11:00


相关推荐

  • 完全背包 初学篇「建议收藏」

    完全背包 初学篇「建议收藏」完全背包 初学

    2022年6月22日
    63
  • 微信公众号网页开发,登录授权和微信支付

    微信公众号网页开发,登录授权和微信支付微信公众号的网页开发基本和H5移动端开发一致,主要是涉及到网页授权获取用户信息和使用js-sdk获取微信原生能力支持。开发前准备申请一个测试号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login用自己微信扫码登录,然后扫码关注当前测试号,这里注意js接口安全域名和网页授权回调域名,需要配置为当前项目地址。使用测试号时用ip即可,但是线上必须是域名。网页授权类似把系统自己的登录体系移除,通过微信授权方式获取微信用户信息。

    2022年6月5日
    134
  • Java—网络编程

    Java—网络编程1.网络编程的基本概念1.1网络的概念网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接1.2网络连接的功能1.3网络编程的三要素1)IP地址:唯一标识网络上的每一台计算机,两台计算机之间通信的必备要素。2)端口号:计算机中应用的标号(代表一个应用程序),0-1024系统使用或保留端口,端口号占2个字节,所以有效端口0-65535.3)通信协议:通信的规则TCP,UDP4)注意:在通信协议相同的情况下,端口号才是唯一的。2.IP_端口_Scoket含义2.1IP地

    2022年7月8日
    24
  • hanoi塔问题如下图所示_hanoi塔问题最经典的算法

    hanoi塔问题如下图所示_hanoi塔问题最经典的算法什么是hanoi塔?汉诺塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。如下图问题解答问题定义我们把左边的柱子叫做A,中间的柱子叫做B,右边的柱子叫做Chanoi塔的搬运过程;i

    2025年7月25日
    4
  • mysql中phpmyadmin安装教程_phpMyAdmin 安装教程全攻略「建议收藏」

    mysql中phpmyadmin安装教程_phpMyAdmin 安装教程全攻略「建议收藏」管理MYSQL数据库的最好工具是PHPmyAdmin,现在最新版本是phpMyAdmin2.9.0.2,这是一个国际上开源的软件,一直在更新版本,你可以从http://www.phpmyadmin.net官方网站上下载到,安装后可以远程更新数据库(其实是在服务器上安装)。安装办法请参考:phpMyAdmin安装攻略1、先下载phpMyAdmin安装包,http://www.phpm…

    2022年5月31日
    35
  • claude code switch安装使用指南:一键切换多Claude API

    claude code switch安装使用指南:一键切换多Claude API

    2026年3月15日
    2

发表回复

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

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