【html 5】FileReader読み取りファイル

10332 ワード

FileReader:
FileReaderオブジェクトを使用すると、Webアプリケーションがユーザーコンピュータに格納されているファイル(または元のデータバッファ)の内容を非同期で読み込み、FileまたはBlobオブジェクトを使用して読み込むファイルまたはデータを指定できます.
ここで、Fileオブジェクトは、ユーザが1つの要素上でファイルを選択して戻ってきたFileListオブジェクトからでもよいし、ドラッグアンドドロップ操作によって生成されたDataTransferオブジェクトからでもよいし、1つのHTML CanvasElement上でmozGetAsFile()メソッドを実行して結果を返すからでもよい.
ツールバーのFileReader.error 
ファイルの読み込み中に発生したエラーを示すDOMException.FileReader.readyState 
FileReaderのステータスを表す数値.値は次のとおりです.
定数名の値の説明
EMPTY 0はまだデータをロードする.
LOADING 1のデータがロードする.
DONE 2は、全ての読み出し要求を完了する.FileReader.result 
ファイルの内容.このプロパティは、読み取り操作が完了した後にのみ有効です.データのフォーマットは、どの方法で読み取り操作を開始するかによって異なります.
イベント処理関数:FileReader.onabort
abortイベントを処理します.このイベントは、読み取り操作が中断されたときにトリガーされます.FileReader.onerror
errorイベントを処理します.このイベントは、読み取り操作にエラーが発生したときにトリガーされます.FileReader.onload
loadイベントを処理します.このイベントは、読み取り操作が完了するとトリガーされます.FileReader.onloadstart
loadstartイベントを処理します.このイベントは、読み込み操作の開始時にトリガーされます.FileReader.onloadend
loadendイベントを処理します.このイベントは、読み取り操作が終了すると(成功するか失敗するか)トリガーされます.FileReader.onprogress
progressイベントを処理します.このイベントはBlobの読み込み時にトリガーされます.
方法:FileReader.abort()
読み込み操作を中止します.戻るとreadyStateプロパティはDONEになります.
構文:instanceOfFileReader.abort();
この方法はFileReaderの読み取り操作をキャンセルすることができ,トリガ後readyStateは完了(DONE)となる.FileReader.readAsArrayBuffer()
指定するBlobの内容の読み取りを開始し、終了するとresult属性に保存するのは、読み込まれたファイルのArrayBufferデータオブジェクトとなる.
構文:instanceOfFileReader.readAsArrayBuffer(blob);
FileReaderインタフェースによって提供されるreadAsArrayBuffer()メソッドは、指定されたBlobまたはFileコンテンツの読み取りを開始するために使用されます.読み取りが完了すると、readyStateはDONE(完了)となり、loadendイベントがトリガーされます.resultプロパティには、読み取りファイルのデータを表すArrayBufferオブジェクトが含まれます.FileReader.readAsBinaryString() 
指定したBlobの内容の読み込みを開始します.完了すると、resultプロパティには、読み込まれたファイルの元のバイナリデータが含まれます.
構文:instanceOfFileReader.readAsBinaryString(blob);
readAsBinaryStringメソッドでは、指定したBlobまたはFileオブジェクトが読み込まれます.読み取りが完了すると、readyStateはDONE(完了)になり、loadendイベントがトリガーされます.resultプロパティには、読み込まれたファイルの元のバイナリフォーマットが含まれます.FileReader.readAsDataURL()
指定したBlobの内容の読み込みを開始します.完了すると、resultプロパティには、読み込まれたファイルの内容を表すdata:URL形式の文字列が含まれます.
構文:instanceOfFileReader.readAsDataURL(blob);
readAsDataURLメソッドでは、指定したBlobまたはFileオブジェクトが読み込まれます.読み取りが完了するとreadyStateは完了したDONEになり、loadendイベントがトリガーされます.resultプロパティには、読み込んだファイルの内容を表すdata:URL形式の文字列(base 64符号化)が含まれます.FileReader.readAsText()
指定したBlobの内容の読み込みを開始します.完了すると、resultプロパティには、読み込まれたファイルの内容を表す文字列が含まれます.
構文:instance of FileReader.readAsText(blob[, encoding]);
readAsTextメソッドは、BlobまたはFileオブジェクトを特殊な符号化フォーマットに従ってコンテンツ(文字列形式)に変換することができる.
この方法は非同期であり,すなわち実行が完了した場合にのみ結果が表示され,直接表示が結果がない場合にはundefinedが返される.
すなわち、インスタンスのonloadまたはonloadendをマウントする方法で変換後の結果を処理する必要がある
変換が完了するとreadyStateというパラメータはdoneの完了状態に変換され、event(「loadend」)にマウントされたイベントがトリガーされ、イベントが返すパラメータからのFileReaderが得られる.resultプロパティが変換された結果
使用方法:
FileReaderは、ファイルの内容を非同期で読み取り、結果はイベントコールバックで取得します.次に、ローカルimgファイルの内容を読み取る例を示します.

//

if (typeof (FileReader) !== 'undefined') {

        //

         let reader = new FileReader();

        //

         reader.onload = (e: any) => {

                    this.pdfSrc = e.target.result;

                    // this.pdfSrc = "http://*.*.*.*:8889/group1/M00/00/6A/G0488.pdf";

          };

          reader.readAsArrayBuffer($img.files[0]);

}

onprogress、onerror , 。




fileReader :

,img src background url , base64 。

, , , 。

FileReader readAsDataURL , , 。 , , :

var input  = document.getElementById("file");   // input file

input.onchange = function(){

    var file = this.files[0];

        if(!!file){

            var reader = new FileReader();

            // base64

            reader.readAsDataURL(file);

            reader.onload = function(){

                //

                document.getElementById("file_img").src = this.result;

        }

    }

}





HTML5 , XHR2, , form 。

1、 input[type="file"] File

2、 FileReader readAsArrayBuffer File ArrayBuffer

3、 xhr ,

4、 xhr.sendAsBinary ArrayBuffer post body

var input  = document.getElementById("file");   // input file

input.onchange = function(){

    var file = this.files[0];

        if(!!file){

            var reader = new FileReader();

            reader.readAsArrayBuffer(file);

            reader.onload = function(){

                var binary = this.result;

                upload(binary);

        }

    }

}



//

function upload(binary){

    var xhr = new XMLHttpRequest();

    xhr.open("POST", "http://xxxx/opload");

    xhr.overrideMimeType("application/octet-stream");

    //

    if(xhr.sendAsBinary){

        xhr.sendAsBinary(binary);

    }else{

        xhr.send(binary);

    }

    

    //

    xhr.onreadystatechange = function(e){

        if(xhr.readyState===4){

            if(xhr.status===200){

                //        

            }

        }

    }

}