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

时间:2018-01-19 12:04:12

标签: javascript file validation mime-types filereader

我正在使用文件类型的幻数 十六进制值检查 mime类型验证但是它无效它无法检查<\ n strong> 返回错误的提醒消息 ,即使该文件具有 右十六进制值 作为标题。

以下是代码中的详细信息:

&#13;
&#13;
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);
        });
      });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="file" id="file" name="file" />
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

无论header2

的值如何,这都将是真的
if(header2 !=='d0cf11e0' || header2 !=='504b34')

你可能想要这个:

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