上代码
根据文件名.后的字母来判断
(fileName) => {
return fileName.substr(fileName.lastIndexOf(".") + 1).toLowerCase();
},
当然也可以写正则
if(!(file.type.indexOf('image')==0 && file.type && /\.(?:jpg|png|gif)$/.test(file.name)) ){
alert('图片只能是jpg,gif,png');
return ;
}
判断dicom文件
dicom文件是医学的一种文件格式,这里提供一种格式判断方法
(file) => {
return new Promise((resolve, reject) => {
let str = "";
let reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onloadend = () => {
let buffer = reader.result;
if (buffer.byteLength < 133){
reject();
} else {
let view = new Uint8Array(buffer, 128, 4);
for (let i = 0; i<view.length; i++){
str += String.fromCharCode(view[i]);
}
if (str === "DICM") {
resolve();
} else {
reject();
}
}
};
});
},
FileReader是W3C提供的一个读取文件的类
它有4种方法可以读取文件
1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
2.readAsBinaryString(file):将文件读取为二进制字符串
3.readAsDataURL(file):将文件读取为Data URL
4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
此外,abort()方法可以停止读取文件。
FileReader对象在读取文件后,还需要进行处理。为了不阻塞当前线程,API采用了事件模型,可以注册这些事件:
1.onabort:中断时触发
2.onerror:出错时触发
3.onload:文件成功读取完毕时触发
4.onloadend:文件读取完毕时触发,无论是否失败
5.onloadstart:文件开始读取时触发
6.onprogress:当文件读取时,周期性地触发