ところで、今日はProxy SwitchySharpのソースコードをざっと見ただけですが、この記事で紹介するファイルの読み込みや保存など、とても勉強になりました。
Google はプラグイン データを同期する機能をまだ提供していないため、プラグイン設定のインポートとエクスポートにはファイルを扱う必要があります。セキュリティ上の理由から、ファイルにアクセスするための API を提供しているのは IE だけですが、HTML 5 の登場により、他のブラウザもそれをサポートするようになりました。
まずファイルを読み込みましょう。 W3C はいくつかの File API を提供しますが、その中で最も重要なものは FileReader クラスです。
まず、使用する必要がある HTML タグをリストします:
FileReader には 4 つの読み取りメソッドがあります。
1.readAsArrayBuffer(file): ファイルを ArrayBuffer として読み取ります。
2.readAsBinaryString(file): ファイルをバイナリ文字列として読み取ります
3.readAsDataURL(file): ファイルをデータ URL として読み取ります
4.readAsText(file, [encoding]): ファイルはテキストとして読み取られ、デフォルトのエンコード値は「UTF-8」です
さらに、abort() メソッドはファイルの読み取りを停止できます。
ファイルを読み取った後も、FileReader オブジェクトを処理する必要があります。現在のスレッドをブロックしないようにするために、API はイベント モデルを採用しており、次のイベントを登録できます:
1.onabort: 割り込み時にトリガー
2.onerror: エラーが発生したときにトリガー
3. onload: ファイルの読み取りが成功したとき トリガー
4.onloadend: 失敗に関係なく、ファイルの読み取り時にトリガー
5.onloadstart: ファイルの読み取りが開始されたときにトリガー
6.onprogress: 定期的にトリガーファイルが読み取られたとき
これらのメソッドを使用して、ファイルを処理できます。
まずテキスト ファイルを読んでみましょう:
' this.result '').appendTo('body'); }
次のステップはファイルを保存することです。
実際には File API: Writer は 4 つのインターフェイスを提供しますが、現在 BlobBuilder を実装しているのは一部のブラウザー (Chrome 8 および Firefox 4) のみであり、残りのインターフェイスは使用できません。
調べてみたらその秘密が分かりました。
BlobBuilder は Blob オブジェクトを作成できます。この Blob オブジェクトを URL.createObjectURL() メソッドに渡して、オブジェクト URL を取得します。そして、このオブジェクト URL は、この Blob オブジェクトのダウンロード アドレスです。
ダウンロード アドレスを取得したら、a 要素を作成し、href 属性にダウンロード アドレスを割り当て、download 属性にファイル名を割り当てます (Chrome 14 でサポート)。
次に、クリック イベントを作成し、処理のために a 要素に渡します。これにより、ブラウザーは Blob オブジェクトのダウンロードを開始します。
最後に、URL.revokeObjectURL() を使用してオブジェクト URL を解放し、このファイルを参照する必要がなくなったことをブラウザーに通知します。
var url = URL.createObjectURL(blob);
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = URL;
save_link.download = ファイル名;
varevent = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0、null);
URL.revokeObjectURL(url);
}
var bb = new BlobBuilder;
saveAs(bb.getBlob('text/plain;charset=utf-8'), 'hello world. txt');
テスト中にテキスト ファイルを保存するように求められます。 Chrome では、Web ページをサーバーまたはプラグインに配置する必要があります。