在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等。本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下。

在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以马上校验文件的大小和属性等,这其实时得益于浏览器端新增的对文件的校验能力,其中支持HTML 5的浏览器,都会实现W3C实现的文件API标准,其中可以读取客户端文件的各种信息和参数。

下面的例子如下,首先是HTML

XML/HTML Code复制内容到剪贴板

这里data-file_type属性中,指定了文件的类型,接受ZIP,PNG文件,用|分隔开来,其中data-max-size指定文件的大小,这里是1MB。然后使用jquery 进行判断

JavaScript Code复制内容到剪贴板

$('input[type=file]').each(function()

{

if(typeof$(this).attr('data-file_type') =='string')

{

varfile_types = $(this).attr('data-file_type').split('|');

}

varmimes = get_mimes(file_types);

//文件要求的指定大小

varmax_size = parseInt($(this).attr('data-max_size'));

$(this).change(function(evt)

{

varfinput = $(this);

varfiles = evt.target.files;// 获得文件对象

varoutput = [];

for(vari = 0, f; f = files[i]; i++)

{

//检查文件的类型是否符合指定要求

if(jQuery.inArray(f.type , mimes) == -1)

{

alert('File type '+ f.type +' not allowed');

$(this).val('');

continue;

}

//检查文件大小

elseif(f.size > max_size)

{

alert('Maximum file size is '+ max_size +' bytes.');

$(this).val('');

}

//Validation ok

else

{

output.push('[b]', f.name,'[/b] (', f.type ||'n/a',') - ', f.size,' bytes, last modified: ', f.lastModifiedDate.toLocaleDateString() );

}

}

finput.after('

'+ output.join('') +'

');

});

});

在上面的代码中, var mimes = get_mimes(file_types); 其实是一个方法,如下:

JavaScript Code复制内容到剪贴板

/*

Get the mimes of a list of extensions as an array

*/

functionget_mimes(extensions)

{

varmimes = [];

for(variinextensions)

{

varext = extensions[i];

if(extinmime_types)

{

varmime = mime_types[ext];

if($.isArray(mime))

{

jQuery.merge(mimes , mime);

}

else

{

mimes.push(mime);

}

}

}

returnmimes;

}

这里其实就是将ZIP,PNG这样的类型传入,然后返回一个这类文件对应的MIME/TYPE,比如定义一个 mime_types数组,如下:

JavaScript Code复制内容到剪贴板

varmime_types = {

"gif":"image\/gif",

"jpeg":["image\/jpeg","image\/pjpeg"],

"jpg":["image\/jpeg","image\/pjpeg"],

"jpe":["image\/jpeg","image\/pjpeg"],

"png":["image\/png","image\/x-png"],

..................

}

重点关注的是HTML 5中,新的文件API,可以在客户端马上判断文件类型,如下:

XML/HTML Code复制内容到剪贴板

varfiles=evt.target.files; // 获得文件对象,是一个集合,可以有多个文件

varfile_count=files.length;  //文件长度

varfile_1=files[0]; // or files.item(0);这里获得多个文件中的第一个文件

varname=file_1.name; //获得文件名

varsize=file_1.size;//获得文件大小

vartype=file_1.type; //文件类型

varlastModifiedDate=file_1.lastModifiedDate;  //文件修改时间

详细的关于HTML 5文件上传的,见: http://www.w3.org/TR/file-upload/

以上这篇html5 实现客户端验证上传文件的大小(简单实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持找一找教程网。

如何上传html验证文件大小,html5 实现客户端验证上传文件的大小(简单实例)相关推荐

  1. mac 上传ftp服务器文件大小,mac与windows通过ftp传输文件

    1.两个系统相互传文件,比较通用的方式是用QQ,两台电脑一台各登陆一个qq,发文件就行了,在同一个网段时,qq会自动转换为按局域网的方式传输. 2.本人不愿安装qq,以ftp方式进行传输,先在wndo ...

  2. html表单验证案例,HTML5表单验证(4个实用的表单美化案例)

    multipart/form-data 在使用包含文件上传控件的表单时,必须使用 autocomplete="on" 自动补全功能 novalidate 不验证 placehold ...

  3. Windows上获取文件大小的几种方法及获取文件夹大小方法

    文章来自:https://blog.csdn.net/mfcing/article/details/53184921 获取文件大小 Windows提供了好几个API函数来获取文件大小,还可以使用标准C ...

  4. python os获取文件大小_Python3基础 os.path.getsize 获得文件的大小

    Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda : 4.5.11 typesetting : Markdown ...

  5. 登入验证安全 上(验证码、忘记密码、客户端验证)

    目录 1.未进行登陆凭证验证 2.图形验证码 2.1验证码可爆破 2.2 验证码复用 2.3 验证码绕过

  6. 新浪微博OAUTH2.0授权验证(基于SSO客户端验证)

    1.新浪微博开放平台注册应用 微博开放平台的网址为:http://open.weibo.com/apps 应用注册成功之后要填写应用的相关信息 主要有:应用的包名和签名 包名就是eclipse下的包: ...

  7. linux 文件大小总和,linux磁盘占用跟每个文件夹大小总和不符?

    我们在使用磁盘统计的时候,经常用到df和度命令, 但是很多时候都发现不太一致.其实主要分下面两类情况 一.僵尸进程 通过top命令可以统计僵尸进程: image.png 也可以通过以下命令进行操作 p ...

  8. 大视频上传服务器,支持HTML5断点续传,支持4GB以上大视频文件上传

    当前,我们正处于一个视频爆炸的时代,高清智能手机人人都有,各种场景下的视频应用越来越多,4K高清视频正在普及,视频文件尺寸动辄几个GB.当我们需要和他人分享这些大视频时,视频的上传和断点续传文件立马出 ...

  9. html字母上方加箭头,html5怎么在图片上加左右箭头

    html5怎么在图片上加左右箭头0 html5怎么在图片上加左右箭头 a[href]{font-size:25px;}a[href][id]{background-color:black;... ht ...

最新文章

  1. 修改oracle数据库默认时间格式
  2. sj 网页前端与后台数据交互的3种方式
  3. python有趣的小项目-有趣的十个Python实战项目,让你瞬间爱上Python!
  4. 算法:验证二叉搜索树
  5. 【企业管理】人力资源是CEO的第一工程
  6. HTTPS和TCP的关系
  7. JMetro版本4.8已发布
  8. 百度地图加载空白颜色_详细解析百度收录和百度排名关系
  9. JSON语法之JSON字符串
  10. MVC实用架构设计(三)——EF-Code First(1):Repository,UnitOfWork,DbContext
  11. 1342.将数字变成0的操作次数
  12. lesson1 ODE的几何解法:方向场,积分曲线
  13. Apache Flink 误用之痛
  14. 慕课网仿去哪儿项目笔记--(二)-首页部分
  15. MIUI12系统如何刷入开发版获得ROOT权限
  16. 计算机组成原理 静态随机存储器实验,计算机组成原理静态随机存储器实验
  17. 电动汽车结构原理基础知识
  18. kubectl 命令详解(三十一):rollout history
  19. UVM-phase机制
  20. add p4 多个文件_P4_tutorials

热门文章

  1. MyEclipse 快捷键及经验总结
  2. VBScript教程-第一章. 脚本的定义和术语
  3. Oracle数据库的一些常用命令
  4. shell 实例收集
  5. Caffe官方教程翻译(10):Editing model parameters
  6. 好程序员web前端分享函数作用域及递归
  7. 在angular中一个页面滚动后,打开新页面不在最顶部的解决办法
  8. Ubuntu安装Nginx+PHP5.6+MySQL5.6
  9. python将图片转化为字符图
  10. 走过路过来看看各种实现跨域的方式~