上代碼
根據(jù)文件名.后的字母來判斷
(fileName) => {
return fileName.substr(fileName.lastIndexOf(".") + 1).toLowerCase();
},
當(dāng)然也可以寫正則
if(!(file.type.indexOf('image')==0 && file.type && /\.(?:jpg|png|gif)$/.test(file.name)) ){
alert('圖片只能是jpg,gif,png');
return ;
}
判斷dicom文件
dicom文件是醫(yī)學(xué)的一種文件格式额湘,這里提供一種格式判斷方法
(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提供的一個(gè)讀取文件的類
它有4種方法可以讀取文件
1.readAsArrayBuffer(file):將文件讀取為ArrayBuffer七问。
2.readAsBinaryString(file):將文件讀取為二進(jìn)制字符串
3.readAsDataURL(file):將文件讀取為Data URL
4.readAsText(file, [encoding]):將文件讀取為文本,encoding缺省值為'UTF-8'
此外存哲,abort()方法可以停止讀取文件。
FileReader對(duì)象在讀取文件后七婴,還需要進(jìn)行處理祟偷。為了不阻塞當(dāng)前線程,API采用了事件模型本姥,可以注冊(cè)這些事件:
1.onabort:中斷時(shí)觸發(fā)
2.onerror:出錯(cuò)時(shí)觸發(fā)
3.onload:文件成功讀取完畢時(shí)觸發(fā)
4.onloadend:文件讀取完畢時(shí)觸發(fā)肩袍,無論是否失敗
5.onloadstart:文件開始讀取時(shí)觸發(fā)
6.onprogress:當(dāng)文件讀取時(shí)杭棵,周期性地觸發(fā)