【发布时间】:2018-03-08 11:02:14
【问题描述】:
function _validMimeType(file) {
var validSignatures = ['ffd8ffe0', '89504e47', '424d3804', '49492a00',
'4d4d002a' , 'd0cf11e0', '504b0304', '74686973', '7b5c7274', '25504446',
'52617221'];
var slice = file.slice(0, 4);
var reader = new FileReader();
reader.onloadend = function(e) {
var view = new DataView(reader.result),
signature;
if(view.byteLength == 8){
signature = view.getUint32(0, false).toString(16) +
view.getUint32(4, false).toString(16);
} else {
signature = view.getUint32(0, false).toString(16);
}
for (var i = 0; i < validSignatures.length; i++) {
if (signature == validSignatures[i].toLowerCase()) {
console.log(signature);
return true;
}
}
return false;
}
reader.readAsArrayBuffer(slice);
}
_validMimeType(file) returns me undefined
当我将文件从上传者传递到 _validMimeType(file) 时,它返回给我未定义。
【问题讨论】:
-
正确,因为您没有返回
_validMimeType中的任何内容 - 并且要抢占下一个问题,请阅读 stackoverflow.com/questions/14220321/… -
因为这不是 ajax 调用。我需要它在 onloadend 函数结束时返回 true 或 false。我该怎么做
-
你不能让
_validMimeType同步返回一个值,因为它异步确定返回值......你需要学习使用异步技术(回调,承诺等) - 你阅读stackoverflow.com/questions/14220321/…? -
我需要等待文件阅读器返回真或假,因为未定义不会让我触发 ajax 调用。你能帮我在这里写一个回调函数吗
-
function _validMimeType(file, callback) {then 而不是return true|falsedoreturn callback(true|false);... 然后使用它_validMimeType(file, function(result) { ... do things with the result here ...})
标签: javascript file upload mime reader