if (fileList[i].type == 'image/png'){
//执行上传代码
alert(fileList[i].name + '上传成功!');
}
}
}
已经选择了两个文件,一个png图片,一个txt文件,然后点击提交:
**FileReader对象
负责把文件读入内存,并且读取文件中的数据**
1.读取并显示文件
readAsText() 将文件中的数据读取成文本数据
readAsBinaryString()读取为二进制字符串
readAsDataURL()读取为DataURL字符串
readAsArrayBuffer()读取为一个ArrayBuffer对象
abort()终端读取操作
2.检测读取事件
onabort:数据读取中断时触发
onprogress:数据读取中触发
onerror:数据读取出错时触发
onload:数据读取完成并成功时触发
onloadstart:数据开始读取时触发
onloadend:数据读取完成时触发,不论成功还是失败
btn.onclick = function(){
var fileList = file.files;
var len = fileList.length;
// console.log(fileList);
for (var i = 0; i < len; i++){
if (fileList[i].type == 'image/png'){
//执行上传代码
alert(fileList[i].name + '上传成功!');
}else if (fileList[i].type == 'text/plain'){
var reader = new FileReader();
reader.readAsText(fileList[i]);//读取具体内容,此处不能写this,指的是btn
reader.onload = function(){
console.log(reader.result);//读取完成后打印内容
//执行上传操作
}
}
}
}
效果:
如果读取成二进制,中文会乱码
文本内容是:hello 世界
读取成文本:
读取成二进制readAsBinaryString:
readAsDataURL可以用来读取图片,转为base64格式:
btn.onclick = function(){
var fileList = file.files;
var len = fileList.length;
// console.log(fileList);
for (var i = 0; i < len; i++){
if (fileList[i].type == 'image/png'){
alert(fileList[i].name + '上传成功!');
var reader = new FileReader();
reader.readAsDataURL(fileList[i]);
reader.onload = function(){
console.log(reader.result);
var img = new Image();
img.src = reader.result;
document.body.appendChild(img);//将图片加到dom中
}
}
}
}
获取图片的DataURL,即base64编码,赋给新img,再将img加到dom中:
Blob对象
1.blob对象的访问
2.blob对象的创建
3.截取blob对象
blob可以存储只读原始数据的类文件,可以用于存储二进制数据;
File接口基于Blob,继承了Blob的功能(type和size属性),blob支持截取文件,比如上传一个大视频,会截取成几段再传
var blob = new Blob(['asdf']);
var reader = new FileReader();
reader.readAsText(blob);
reader.onload = function(){
console.log(reader.result);
}//打印结果是:asdf
reader.readAsText(blob.slice(0,2));//截取前两个
reader.onload = function(){
console.log(reader.result);
}//打印结果是:as
btn.onclick = function(){
var fileList = file.files;
最后
你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。
我特地针对初学者整理一套前端学习资料