上代碼
根據文件名.后的字母來判斷
(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:當文件讀取時,周期性地觸發