代码之家  ›  专栏  ›  技术社区  ›  sAnS

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

  •  0
  • sAnS  · 技术社区  · 7 年前

    我正在检查 使用幻数进行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" />
    1 回复  |  直到 7 年前
        1
  •  1
  •   Rick Hitchcock    7 年前

    无论 header2 :

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

    您可能希望这样:

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