在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等。本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下。
在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以马上校验文件的大小和属性等,这其实时得益于浏览器端新增的对文件的校验能力,其中支持HTML 5的浏览器,都会实现W3C实现的文件API标准,其中可以读取客户端文件的各种信息和参数。
下面的例子如下,首先是HTML
XML/HTML Code复制内容到剪贴板
- input type="file" data-file_type="zip|png" data-max_size="1000000">
-
这里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')
- {
-
var file_types = $(this).attr('data-file_type').split('|');
- }
-
-
var mimes = get_mimes(file_types);
-
-
-
var max_size = parseInt($(this).attr('data-max_size'));
-
-
$(this).change(function(evt)
- {
-
var finput = $(this);
-
-
var files = evt.target.files;
-
-
var output = [];
-
-
for (var i = 0, f; f = files[i]; i++)
- {
-
-
if(jQuery.inArray(f.type , mimes) == -1)
- {
-
alert('File type '+ f.type + ' not allowed');
-
$(this).val('');
-
continue;
- }
-
-
-
else if(f.size > max_size)
- {
-
alert('Maximum file size is ' + max_size + ' bytes.');
-
$(this).val('');
- }
-
-
-
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复制内容到剪贴板
-
-
-
-
function get_mimes(extensions)
- {
-
var mimes = [];
-
for(var i in extensions)
- {
-
var ext = extensions[i];
-
-
if(ext in mime_types)
- {
-
var mime = mime_types[ext];
-
-
if($.isArray(mime))
- {
- jQuery.merge(mimes , mime);
- }
-
else
- {
- mimes.push(mime);
- }
- }
- }
-
-
return mimes;
- }
这里其实就是将ZIP,PNG这样的类型传入,然后返回一个这类文件对应的MIME/TYPE,比如定义一个 mime_types数组,如下:
JavaScript Code复制内容到剪贴板
- var mime_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复制内容到剪贴板
- var files = evt.target.files; // 获得文件对象,是一个集合,可以有多个文件
-
var file_count = files.length; //文件长度
-
-
var file_1 = files[0]; // or files.item(0);这里获得多个文件中的第一个文件
-
-
var name = file_1.name; //获得文件名
-
var size = file_1.size;//获得文件大小
-
var type = file_1.type; //文件类型
-
var lastModifiedDate = file_1.lastModifiedDate; //文件修改时间
详细的关于HTML 5文件上传的,见: http://www.w3.org/TR/file-upload/
以上这篇html5 实现客户端验证上传文件的大小(简单实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
原文地址:http://www.manongjc.com/article/814.html
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn