我正在检查 使用幻数进行mime类型验证 文件类型的十六进制值 但它不起作用 无法检查和 返回错误的警报消息 即使文件 右十六进制值 作为标题。
以下是代码中的详细信息:
jQuery(document).ready(function() { jQuery.fn.hasMimetype = function(ctrl) { try { ctrl.value = null; } catch(ex) { } if (ctrl.value) { ctrl.parentNode.replaceChild(ctrl.cloneNode(true), ctrl); } } const fileSelector2 = document.getElementById('file') jQuery('#file').change(function(event) { const file = event.target.files[0] //alert(file.type); const filereader = new FileReader() filereader.onloadend = function(evt) { var header2 = ""; var arr = (new Uint8Array(evt.target.result)).subarray(0, 4); for(var i = 0; i < arr.length; i++) { header2 += arr[i].toString(16); } if(header2 !=='d0cf11e0' || header2 !=='504b34'){ alert(header2); alert("only doc/docx files are supported"); $('#file').hasMimetype(fileSelector2); } } filereader.readAsArrayBuffer(file); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="file" id="file" name="file" />
无论 header2 :
header2
if(header2 !=='d0cf11e0' || header2 !=='504b34')
您可能希望这样:
if(header2 !=='d0cf11e0' && header2 !=='504b34')