使用FileReader的实例将文件读取到浏览器

使用FileReader的实例将文件读取到浏览器

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<style>
{
margin: 0;
padding: 0;
}
.box{
width: 300px;
height: 32px;
border: 2px solid #666;
border-radius: 16px;
overflow: hidden;
text-align: center;
}
.inner{
height: 32px;
background-color: yellowgreen;
width: 0%;
}
</style>
</head>
<body>
<input type="file" id="fileUpload" multiple>

<input type="button" id="fileInfo" value="元数据">
<input type="button" id="getDataURL" value="读取URL">
<input type="button" id="getText" value="读取文本">
<input type="button" id="getBinary" value="二进制读取">
<p></p>

<progress max="100" min="0" width="600" value="80"></progress>

<div class = "box">
<div class = "inner"></div>
</div>
</body>
<script type="text/javascript">
//上传域对象
var fileInput = document.getElementById("fileUpload");
/

上传域对象包含一个files属性。其中保存选中文件对象集合。每个文件对象中都包含选中文件的
元数据。
元数据:通常包含文件名,文件大小 类型 上一次修改时间,时长等描述信息,但并不是文件本身。
/
/

H5为我们提供了新的文件读取方式 ,使用FileReader的实例将文件读取到浏览器。
readAsDataURL: 将文件读取成url类型的数据。
readAsText: 将文件读取成文本形式。
readAsBinaryString:将文件读取为2进制字符串。
*/
//输出选中文件的文件名元数据信息
document.getElementById("fileInfo").onclick = function(){
//获取文件列表
if(fileInput.files.length > 0){
var files = fileInput.files;
for(var n=0;n<files.length;n++){
console.log(files[n].name+": "+files[n].size);
}
}else{
console.log("请选择文件!");
}
};
//DataURL方式输出选中文件内容
document.getElementById("getDataURL").onclick = function(){
//获取文件列表
if(fileInput.files.length > 0){
var files = fileInput.files;
for(var n=0;n<files.length;n++){
//创建文件读取对象
var reader = new FileReader();
reader.readAsDataURL(files[n]);
//文件读取完毕触发reader的onload事件
reader.onload = function(){
// 创建img标签
var img = document.createElement("img");
// result属性的值,读取的结果
img.src = this.result;
// 将图片添加到body中
document.body.appendChild(img);
}
}
}else{
console.log("请选择文件!");
}
};
//文本方式输出选中文件内容
document.getElementById("getText").onclick = function(){
//获取文件列表
if(fileInput.files.length > 0){
var files = fileInput.files;
for(var n=0;n<files.length;n++){
//创建文件读取对象
var reader = new FileReader();
reader.readAsText(files[n], "utf-8");
//文件读取完毕
reader.onload = function(){
document.querySelector("p").innerText += this.result;
}
}
}else{
console.log("请选择文件!");
}
};
//二进制方式输出选中文件内容
document.getElementById("getBinary").onclick = function(){
//获取文件列表
if(fileInput.files.length > 0){
var files = fileInput.files;
for(var n=0;n<files.length;n++){
//创建文件读取对象
var reader = new FileReader();
reader.readAsBinaryString(files[n]);
//文件读取完毕
reader.onload = function(){
document.write(this.result);
}
reader.onprogress = function(e){
var per = parseInt(e.loaded/e.total * 100)+"%";
document.querySelector(".inner").style.width = per;
};
}
}else{
console.log("请选择文件!");
}
};
</script>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,628评论 1 10
  • New logo 创作你的创作 免费下载 以太坊学习 180 tenny1109 简书作者 2016.07.26 ...
    似曾相识2阅读 1,837评论 0 0
  • H5 meta详解 viewport width:控制 viewport 的大小,可以指定的一个值,如果 600,...
    FConfidence阅读 4,276评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,755评论 18 399
  • 什么是社群?通常人们总是以为,社群就是微信群,持这种观点的人大概有80%。根据二八定律,可以肯定的说,这80%的人...
    末时光阅读 2,555评论 0 0

友情链接更多精彩内容