IEのinput type=fileに嵌る

こんばんわ。ここ数日で漫画を6冊も買っているお爺さんです。
ストレスがたまっているのか物欲が止まりません。薄給なんですがねえ、大丈夫なんだろうか。
で、そのストレスの原因は間違いなく、IEのファイルアップロード関係です、ハイ。

ようやく一週間前ぐらいに某システムのリリースが片付きまして、Ajax世界に戻ってきたわけですが、ずーっとファイルのアップロードは鬼門ですな。
今回嵌った所は、ファイルがアップロードされない、という現象です。
ずばり、DOMでformを作ると、IEではアップロードできません。
対処方法はinnerHTMLです。

サンプルソース

FormHTML
<form action="https://hogehoge/cgi-bin/test/a.cgi" enctype="multipart/form-data" method="post">
<input type="file" name="upload">
<input type="submit">
</form>

当然ながら、FORMHTMLでは全ブラウザが大丈夫です。
あたりまえか(^-^;)



InnerHTML(IE,FF,Opera)
<div id=abc>
<script>
var abc = document.getElementById("abc");
abc.innerHTML = "<form action='https://hogehoge/cgi-bin/test/a.cgi' enctype='multipart/form-data' method='post'></form>";
var f = abc.firstChild;
var e1 = document.createElement("span");
e1.innerHTML = "<input type=file name=upload>";
f.appendChild(e1);

var e2 = document.createElement("input");
e2.type = "submit";
f.appendChild(e2);


abc.appendChild(f);

</script>

innerHTMLはFF,Opera,IEで動きました。後safariの動作確認をせねばーという所です。




DOM(FF,Opera)
<div id=def>
<script>
var def = document.getElementById("def");
f1 = document.createElement("form");
f1.action = "https://hogehoge/cgi-bin/test/a.cgi";
f1.method = "post"; // ファイルをアップロードするので、必ずpost
f1.enctype = "multipart/form-data"; // ファイルをアップロードするので、multipart
f1.enctype = "multipart/form-data"; // ファイルをアップロードするので、multipart
f1["accept-charset"] = "UTF-8";

e3 = document.createElement("span");
e3.innerHTML = "<input type=file name=upload>";
f1.appendChild(e3);

var e4 = document.createElement("input");
e4.type = "submit";
f1.appendChild(e4);


def.appendChild(f1);

</script>


DOMで作ると、なぜかIEはダメです。なんでなんでしょうか??
求む、識者の見解・・・ってこんなマニアな事知っている人はほとんどいないんだろーな、と。





ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 3

ナイス
ガッツ(がんばれ!)
かわいい

この記事へのコメント

よーこ
2006年05月25日 22:53
今回も、「対処方法は」以下、斜め読みです。そろそろ私の速読技術も上がってきたでしょうか。
爺さん、とうとう窓際脱出なのですね。フロアの中心は一見さぼれなさそうですが、まさに灯台下暗し、けっこ~人の目がいかないものです。そのまま、永眠しないようにおきをつけくださいませ。
2006年05月26日 15:48
経験者は語る!ってヤツですかね?(^-^;)
窓際脱出して一点うれしいことがありまして。それは何かというと、今の窓際席は空調のファンのほぼ直下にいてすごく寒い&サーバ部屋の隣で空調が切れるとすごく暑いんです。ここから脱出できると思うと少しうれしいです。
脱出先でのんびり腰をすえて仕事ができれば最高なんですけどね。どうなることやら。
よーこ
2006年05月26日 17:57
あまり、腰を据えすぎるのも禁物です。
長居はよくない。
はなれられなくなります。立場からも、会社からも。
2006年05月28日 01:55
その辺の諸々をしょって立つのが男ってなモンです。
あ、腰が悪くなってきたので、お爺さんの場合「諸々」が持ち上がらないかもしれなせんが(^-^;)
↑って持ち上がらなかったら意味がないか。

この記事へのトラックバック