« _base_href 属性 | XULPlanet の XPCOM リファレンスが Firefox 3 / Mozilla 1.9 ベースに更新 » |
nsIWebBrowserPersist で gzip 圧縮されたデータをダウンロードする
HTTPでダウンロードする際は nsIWebBrowserPersist::saveURI や saveChannel が便利だ。
しかし、gzip圧縮形式で転送されたデータ(つまりWebサーバが「Content-Encoding: gzip」ヘッダを付加した場合)をダウンロードすると、圧縮されたままの状態でファイルへと保存してしまう。
非圧縮状態でファイルへ保存するためには、 nsIWebBrowserPersist::persistFlags プロパティに PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION フラグを立てる。
あえて圧縮状態で保存する理由が思いつかないので、基本的にこのフラグは必須と考えてよさそう。
参考
余談
ScrapBook でgzip圧縮されたページを保存すると画像がすべて壊れて表示されなかったり、 Amazon や はてな のページを保存すると、ツリーの favicon が消滅してしまう、といった問題はすべて上記の問題によるものだった。さきほど修正して新しいバージョンをリリースした。
なぜこんな簡単なことに今まで気付かなかったのだろうか…。
しかも気付く前に Bugzilla にバグを立ててしまった。
Bug 416817 – nsIWebBrowserPersist should decompress data if server responses with "Content-Encoding: gzip" header
対応バージョン: Firefox 2.0 – 3.0b5pre
とありますが、Firefox3b4にインストールすることができませんでした。
下記のエラーが表示されます。
↓
「Foxage2ch には安全な更新方法が用意されていないたやいrめ、インストールされません。」
きちんと対応されてから「対応バージョン」を記載すべきだと思いますが...。
なにか当方で特別な操作が必要となるのでしたらご教示ください。
Firefox2で使用していたfoxageのデータが無くなってしまったので大変困っております。
よろしくお願いします。
Import and export functions in ScrapBook are useful.
But me and a colleague are saving different scraps
but want to syncronize our ScrapBooks.
Request: Coud there be a syncronisation option in future?
VR
cybolon