2013-09-25 102 views
0

我只是想知道我怎么可能从html输入文件获取字节数组。从html文件获取字节数组

的代码如下:

<script type ="text/javascript">    

     $(document).ready(function() { 

      $('#cmdUpload').click(function() { 

       uploadFile(); 

      }); 

      function uploadFile() { 

       var file = $("#objFile")[0].files[0]; 




      } 
     }); 
    </script> 
     <body> 
    <input type ="file" id="objFile" size="50" /><br/><br/> 
    <input type ="button" id="cmdUpload" value="Upload"/> 
    </body> 

非常感谢

+0

你也可以在这里提供html吗? – Sunny

+0
+0

好,你想在哪里调用uploadFile函数?意味着在objfile点击或cmdUpload点击? 。 – Sunny

回答

2

这是示例代码被返回字节

使用Javascript:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#cmdUpload').click(function() { 
      uploadFile(); 
     }); 

    }); 

    function uploadFile() { 
     var input = document.getElementById('objFile'); 
     // var file = $("#objFile")[0].files[0]; 
     var file = input.files[0]; 
     fr = new FileReader(); 
     fr.onload = receivedText; 
     //fr.readAsText(file); 
     fr.readAsDataURL(file); 
    } 

    function receivedText() { 
     var b64Data = fr.result.split(','); 
     var contentType = 'image/jpeg'; 
     //document.getElementById('editor').appendChild(document.createTextNode(fr.result)) 
     var byteCharacters = atob(b64Data[1]); 
     var byteNumbers = Array.prototype.map.call(byteCharacters, 
             charCodeFromCharacter); 
     var uint8Data = new Uint8Array(byteNumbers); 
     var blob = b64toBlob(b64Data[1], contentType); 
     var blobUrl = URL.createObjectURL(blob); 
    } 

    function charCodeFromCharacter(c) { 
     return c.charCodeAt(0); 
    } 

    function b64toBlob(b64Data, contentType, sliceSize) { 
     contentType = contentType || ''; 
     sliceSize = sliceSize || 1024; 
     var byteCharacters = atob(b64Data); 
     var byteArrays = []; 

     for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { 
      var slice = byteCharacters.slice(offset, offset + sliceSize); 
      var byteNumbers = Array.prototype.map.call(slice, charCodeFromCharacter); 
      var byteArray = new Uint8Array(byteNumbers); 
      byteArrays.push(byteArray); 
     } 
     for (var i = 0; i < byteArray.length; i++) { 
      alert(byteArray[i]); 
     } 

    } 
</script> 

HTML :

<div> 
    <input type="file" id="objFile" size="50" /><br /> 
    <br /> 
    <input type="button" id="cmdUpload" value="Upload" /> 
    <div id="editor"></div> 
</div> 

希望它能帮助你。请让我知道进一步的帮助。

+0

我现在试一试,然后让你知道。 – user2388013

+0

最后一件事是我可以包括多个文件类型,如gif,png etx – user2388013

+0

是的,你可以通过进一步拆分b64Data [0]来完成。请检查b64Data [0]输出并根据您的要求获取值。 – Sunny