对网络程序员来说,在网页上处理文件上传总是一件麻烦事。 以前,不能通过拖动上传图像。 而且,它没有复杂的Ajax上传技术,很少处理多个文件的批量上传。 除非在上传完成后从服务器端获取,否则也无法获取正在上传的信息。 有时候上传结束后,我发现上传的文件不适合——。 可恶!
现在,HTML5革命、现代浏览器的诞生、JavaScript的升级,这些都为我们提供了获取使用JavaScript和input[type=file]元素上载文件的过程信息的能力。 让我们看看这些上传文件API是如何使用的。
访问要上传的文件的列表信息
必须使用files属性才能获取要上载到所有input[type=file]的文件列表。
//Assuming
varuploadinput=document.getelementbyid (upload );
upload input.addevent listener (' change ',function ) {
控制台. log (upload input.files )//File listing!
);
很遗憾,这个文件列表没有forEach这个方法,所以我们只能使用旧的循环技巧循环操作文件列表:
for(varI=0,file count=upload input.files.length; I文件计数; I ) {
console.log(files[I];
}
重要的是,文件列表具有长度属性。
获取各个上传文件的信息
文件列表中的每个文件对象都包含有关此文件的大量信息,包括文件大小、文件MIME类型、上次修改时间和文件名。
{
最后修改: 1428005315000,
最后修改日期: thu apr 02201515336008336035 GMT-0500 (CDT )、
name: 'profile.pdf ',
size: 135568,
类型: ' application/pdf ',
webkitRelativePath: ' '
}
在上传文件之前,能够验证这些基本信息是最有用的。 例如,可以检查文件的类型和大小。
var maxAllowedSize=500000;
for(varI=0,file count=upload input.files.length,总大小=0; I文件计数; I ) {
totalSize =files[i].size;
总体尺寸最大值低分辨率(if ) {
//notifytheuserthattheirfile(s ) are too large
}
if(files[I].type!='应用程序/pdf
//notifyofinvalidfiletypeforfileinquestion
}
}
如果用户上传的文件太大,超出了允许范围,或者上传类型错误,可以阻止用户上传并提供必要的提示。 上传不成功的理由是什么?
今天就这么简单介绍文件上传API。 这是一个很好的API,有助于在上传文件时浪费很多时间。 这个文件上传API有很多这里没有介绍的知识。 你可以去MDN带着上进心详细阅读。