文件十六进制值检查不起作用



>我正在使用文件类型的幻数十六进制值检查 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的值如何,这都将始终为真:

if(header2 !=='d0cf11e0' || header2 !=='504b34')

您可能想要这个:

if(header2 !=='d0cf11e0' && header2 !=='504b34')

最新更新