HTML5新增了能够读取本地文件的API,同时改进了以前的上传文件表单控件,能够支持多文件上传。
HTML5中,对于<input type="file" />
,我们可以指定multiple属性,这样就能上传多个文件。用户选择的每一个文件都是一个file
,这些file
存储在FileList
中。
file
属性:
name
:文件名,不包括路径lastModifiedDate
:文件最后修改时间,Date类型注意:浏览器基于安全考虑,文件是不能主动读取的,而只能响应用户的操作。
file
继承自Blob
,表示二进制数据。
Blob
属性:
size
:字节长度type
:MIME类型,未知类型返回空字符串FileReader可以把文件异步读入内存。
方法:
事件:
属性:
下面例子实现了图片预览功能:
<body>
<input type="file" id="img_file" />
<button onclick="preview()">预览</button>
<img style="width: 100px; height: 100px;" id="img" src=""/>
<script>
function preview() {
var img = document.querySelector("#img");
var file = document.querySelector("#img_file").files[0];
var reader = new FileReader();
reader.onload = function() {
img.src = reader.result;
};
reader.readAsDataURL(file);
}
</script>
</body>
这个程序将图片以dataURL形式读入,该方法会返回图片的base64数据,读入完成后,将其指定给img标签,完成图片的显示。运行结果如下: