html5 FileReader
9816 ワード
FileReaderは、input要素で選択するファイル、ドラッグ操作で取得したファイル、および1つのHTML CanvasElement上でmozGetAsFile()メソッドを実行した後の戻り結果を非同期で操作することができる.
コンストラクタ
FileReader()
属性リスト error DOMErrorがファイルを読み込む際に発生するエラー.読み取り専用 readyState unsigned shortはFileReaderオブジェクトの現在の状態を示す.値はState constantsの1つです.読み取り専用 result jsvalが読み出すファイルの内容.この属性は、読み出し動作が完了する後にのみ有効である、データのフォーマットは、読み出し動作がどの方法によって開始するかに依存する.読み取り専用
readyState 3状態 readyState=0、file Readerオブジェクトは を確立したばかりです. readyState=1、ファイルの読み取りを開始する readyState=2、ファイル読み込み完了メモリ イベントリスト onabortファイルの読み取り中に、ユーザはabortメソッドを呼び出して のトリガを阻止する. onerrorファイル読み込みプロセスエラー発生 onload全体のファイルの読み取りが完了し、ユーザーはabortを持っていない.ファイルの読み取り争いは正常に をトリガーする. onloadendの読み取りが完了すると、ユーザがabortを強制したり、エラーを読み出したりしても、最終的にこのイベント がトリガーされます. onloadstart読み取り開始イベント onprogress読み込み進捗 メソッドのリスト abortは、abortイベントとerrorイベント をトリガーするファイルの読み取りを強制的に停止する. readAsData URL(Blob blob)ファイルのデータパスを読み取る、画像などを読み取るのに適した . readAsText(Blob blob,optional DOMString encode)は文字列の形式で読み取り、テキストファイルの読み取りに適しており、テキストファイルの内容 に戻る. readAsArrayBuffer(Blob blob)は、ファイルを配列データとして読み込みます.これは、 の操作ファイルに役立ちます. readAsBinaryString(Blob blob)は、サーバ にファイルを読み込むのに適したバイナリ文字をファイルに読み込む.
ちょっとした実験をする
readAsTextでテキストファイルの内容をコンソールに読み込む
readAsData URLで画像をドラッグして画面に表示
readAsBinaryStringによるサーバへのバイナリファイルのアップロード
readAsArrayBuffer,new Blob,createObjectURLを使用してダウンロードリンクを作成
コンストラクタ
FileReader()
属性リスト
readyState 3状態
ちょっとした実験をする
readAsTextでテキストファイルの内容をコンソールに読み込む
//html
<input type = "file" id = "myfile"/><br>
: <p id = "tip"></p>
//javascript
var tip = document.querySelector("#tip");
var fileEle = document.querySelector("#myfile"); //
var reader = new FileReader();
reader.onload = function(ev){ //
tip.innerText = "onload";
var result = reader.result;
tip.innerText = result ; // <p>
}
fileEle.onchange = function(){ //
var file = fileEle.files[0]; // file,file Blob
reader.readAsText(file,"UTF-8"); //
}
readAsData URLで画像をドラッグして画面に表示
//html
<div class = "target" id = "target"></div>
//js
var target = document.querySelector("#target"); //
var reader = new FileReader();
var file = null ;
reader.onload = function(ev){ // ,
var result = reader.result;
var img = new Image();
img.src = result ;
target.appendChild(img);
}
target.addEventListener("drop",function(ev){ // ,
file = ev.dataTransfer.files[0];
reader.readAsDataURL(file);
ev.preventDefault(); //
});
readAsBinaryStringによるサーバへのバイナリファイルのアップロード
//html
<input type = "file" id = "myfile"/><br>
<button type = "button" id = "abort"> </button><br>
: <p id = "tip"></p>
//javascript
var tip = document.querySelector("#tip");
var btn = document.querySelector("#abort");
var fileEle = document.querySelector("#myfile"); //
var reader = new FileReader();
var size = 0 ;
btn.onclick = function(){
reader.abort(); // , abort error
};
fileEle.onchange = function(){ //
var file = fileEle.files[0];
size = file.size ; // ,
reader.readAsBinaryString(file); //
}
reader.onabort = function(ev){
tip.innerText = "onabort";
}
reader.onerror = function(ev){
tip.innerText = "onerror";
}
reader.onload = function(ev){ // , jq ajax
$.ajax({
url : "xxx",
type : "post",
data : {file,reader.result} //
success : function(){
tip.innerText = " ";
},
error : function(){
tip.innerText = " ";
}
});
}
reader.onloadend = function(ev){
tip.innerText = "onloadend";
}
reader.onloadstart = function(ev){
tip.innerText = "onloadstart";
}
reader.onprogress = function(ev){ //
tip.innerText = (reader.result.length / size) * 100 + "%";
}
readAsArrayBuffer,new Blob,createObjectURLを使用してダウンロードリンクを作成
//html
<input type = "file" id = "myfile"/><br>
//javascript
var fileEle = document.querySelector("#myfile"); //
var reader = new FileReader();
reader.onload = function(ev){ //
var blob = reader.readAsArrayBuffer();
var _blob = new Blob([blob],{type,"image/png"}); // bolb ,
var url = Window.URL.createObjectURL(_blob); //
var a = document.createElement('a'); // a
a.href = url ;
a.donwload = 'color.png';
a.textContent = 'Download color.png';
body.appendChild(a);
}
fileEle.onchange = function(){ //
var file = fileEle.files[0]; // file,file Blob
reader.readAsArrayBuffer(file);
}