FileReader

當開發上傳模塊的時候,須要用到input file,能夠設置對應的accept類型來限制上傳的文件javascript

<p>Show .xls, .xlsx, .csv files...</p>
<input type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" ID="fileSelect" runat="server" />  


<p>Only show Excel (.xlsx) files...</p>
<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ID="fileSelect" runat="server" />  

<p>Only show Excel (.xls) files...</p>
<input type="file" accept="application/vnd.ms-excel" ID="fileSelect" runat="server" />  


<p>Only show image files...</p>
<input type="file" accept="image/*" ID="fileSelect" runat="server" />  


<p>Only show text files...</p>
<input type="file" accept="text/plain" ID="fileSelect" runat="server" />  

<p>Only show html files...</p>
<input type="file" accept="text/html" ID="fileSelect" runat="server" />  

<p>Only show video files...</p>
<input type="file" accept="video/*" ID="fileSelect" runat="server" />  

<p>Only show audio files...</p>
<input type="file" accept="audio/*" ID="fileSelect" runat="server" />  

<p>Only show .WAV files...</p>
<input type="file" accept=".wav" ID="fileSelect" runat="server" />  

<p>Only show .PDF files...</p>
<input type="file" accept=".pdf" ID="fileSelect" runat="server" />

基本結構html

<input type="file" name="" id="file" multiple="multiple" onchange="upload(event)">
    <script type="text/javascript">
    function upload(event){
        console.log(event.target.files);//獲取上傳文件
        var file = event.target.files[0];//獲取上傳的文件的第一張
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload=function(event){
            console.log(event.target.result);//result屬於存儲最後的結果數據
        }
    }
    </script>

開始正文:
FileReader 一般用來讀取文件或則二進制存儲對象blob的內容java

直接new FileReader()就能夠app

實例屬性有:
error 只讀ide

function upload(event){
            var input = event.target.files[0];
            var reader = new FileReader();
            reader.onloadstart = function(){
                reader.abort();
            }
            reader.onloadend=function(){
                console.log(reader.error.message); //輸出錯誤信息
            }
            reader.readAsDataURL(input);

        }

方法:
readAsArrayBuffer Begins reading from blob as an ArrayBuffer.
readAsDataURL:Begins reading from blob as a 'data:' url string.
readAsText:Begins reading from blob as a string.url

事件:
onloadstart onloadstart
onprogress Called during a read operation to report the current progress.
onload Called when a read operation successfully completes.
onabort Called when the read is aborted with abort().
onerror Called when there is an error during the load.
onloadend Called after a read completes (either successfully or unsuccessfully).excel

<input type='file' onchange='openFile(event)'>
<script>
  var openFile = function(event) {
    console.log('entering openFile()');
    var input = event.target;

    var printEventType = function(event) {
      console.log('got event: ' + event.type);
    };

    var reader = new FileReader();
    reader.onloadstart = printEventType;
    reader.onprogress = printEventType;
    reader.onload = printEventType;
    reader.onloadend = printEventType;

    console.log('  starting read');
    reader.readAsDataURL(input.files[0]);
    console.log('leaving openFile()');
  };
</script>


--------


<script type="text/javascript">
        function upload(event){
            var input = event.target.files[0];
            var reader = new FileReader();
            reader.onprogress= function(e){
                console.log(e);
            }
            reader.readAsDataURL(input);
        }
    </script>

上傳進度條:code

<p class="progress-bar"></p>
    <script type="text/javascript">
        function upload(event){
            var input = event.target.files[0];
            var reader = new FileReader();
            // reader.onprogress= function(e){
            //  console.log(e);
            // }
            reader.onprogress = function(data) {   //該事件在上傳過程當中,會一直重複執行,直到上傳結束爲止,不要使用setInterval來控制
            if (data.lengthComputable) {  //獲取數據的總長度
                var progress = parseInt( ((data.loaded / data.total) * 100), 10 );
                document.querySelector('.progress-bar').innerHTML=progress+'%';
            }
        }
            reader.readAsDataURL(input);
        }
    </script>

Reference:
https://developer.mozilla.org/en-US/docs/Web/API/FileReader
https://www.javascripture.com/FileReaderorm

相關文章
相關標籤/搜索