IFRAME を使って複数ファイルの同時保存する実験
前エントリの続いて、634 さんの方法で実験再開。
http://634.ayumu-baby.com/javascript/js_multi_file_download.html
634 さんは、IE 6 で試したようなので、僕は前エントリ同様 IE 7、Firefox 3.0.5、Safari 3.2.1、Opera 9.6.3 で試す。
mult_file_dl_by_iframe.html
<html> <head> </head> <body> <form name="download1" target="target1" action="./sample.zip"></form> <form name="download2" target="target2" action="./sample2.zip"></form> <input type="button" value="ダウンロード" onclick="download1.submit();download2.submit();"> <iframe name="target1" width="0" height="0"></iframe> <iframe name="target2" width="0" height="0"></iframe> </body> </html>
form の action で指定している sample.zip と sample2.zip をこのファイルと同じ場所に配置。
試してみたら全てのブラウザで保存できた。
おーー。
IE での結果
というわけで、複数のファイルを同時に保存する場合、IFRAME を使えばできる。XMLHttpRequest のレスポンスに Content-Dispositionヘッダを使ってもできない。
ということが判明してすっきりした。
けれどもまあ、どんな方法にしろ、複数のファイルを同時に保存させるという方法は、HTTP の仕様では元々意図されておらず、一般のユーザーにしたら経験したことのないもの凄く怪しいものに感じるはずなので、インターネット上の Web アプリケーション、Ajax アプリケーションで使うべきではないと思う。
ユーザーに不信感を与えないようにする為、どうしても必要であっても、回りくどいけどユーザーにボタンを2回押してもらうべきだと思う。
唯一使い道としては、イントラネット上の企業内アプリケーションかな。
企業内アプリケーションで使うにしても、ページ上に適切な説明を記述してユーザーの不信感を取り除きつつこれはイレギュラーであることを理解させるようにすべきだと思う。
お後が宜しいようなので、以上で今回の実験終了。