- ファイルを選択する
以下のHTMLを表示すると、ファイルを選択する「ボタン」が表示される。(表示はブラウザにより異なり、「ファイルを選択」「参照」などとなる。)
multiple属性を指定することで、複数のファイルを選択可。
<input id="xgpsview01FileName" type="file" name="xgpsview01FileName" />
- ファイル名を取得する
ファイル名は、以下で取得することができる。(配列になっているので、複数ファイルのケースでは[1][2]…で取得する。)
document.getElementById('xgpsview01FileName').files[0]
イベントハンドラを利用すると以下のとおり。
$('#xgpsview01FileName').live('change', handleFileSelect); function handleFileSelect(evt){ var f = evt.target.files[0]; gFileNameGpsOrg = escape(f.name); }
- ファイルの情報を取得する
ファイル名以外に種類やサイズなどが取得可能。
function handleFileSelect(evt){ var f = evt.target.files[0]; gFileNameGpsOrg = escape(f.name); var str = 'filename:' + escape(f.name) + ' [' + (f.type || 'n/a') + '] - ' + f.size + 'bytes'; //+ ' update:' + f.lastModifiedDate; $('#xgpsview01FileInfo').html(str); var reader = new FileReader();// reader.onload = loaded; reader.onerror = loadedError; reader.readAsText(f); }
- テキストファイルを読み込む
FileReaderオブジェクトのインスタンスを生成し、readAsText()メソッドで読み込む。ファイルのオープン・クローズは不要。また、非同期で処理されるため、読み込み後の処理はイベントハンドラとして記述する。
function handleFileSelect(evt){ var f = evt.target.files[0]; var reader = new FileReader();// reader.onload = loaded; // 読み込み完了後の処理を指定 reader.onerror = loadedError; // 読み込み失敗時の処理を指定 reader.readAsText(f); // ファイル名を指定してテキストファイルを読み込む }
上記の例では、loaded(),loadedError()を定義する。
- ファイルの内容を取り出す
イベントハンドラに渡されるEventオブジェクトのインスタンス event.target.result プロパティに入っている。
function loadedError(event){ alert('error.'); } function loaded(event){ //$('#xgpsview01FileContents').html(event.target.result); // ファイル内容をそのまま表示 var res = event.target.result; d = res.split('\n'); // 1行ごとに分割する。 console.log(d.length); }
ピンバック: GPSファイルの読込・表示(1) | Try Lifelog
ピンバック: GPSファイルの読込・表示(3) – jQuery EasyUI | Try Lifelog