あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

IEだと、Input type=fileで、不正なファイル名を入力したとき、サーバからの反応を受けられない件についてメモ

 HTMLでアップロードをする際に、アップロード処理の間カーソルを砂時計にする処理をjavascriptで作っていたのだが、砂時計のまま復帰しない。
 サーバで無限ループしているかと思いきや、そもそもサーバへsubmitへいっていなかった。
 うまくいくときといかないときがあり、いかないときはaaaとか存在しない値をファイル名として入力したときだった。


 調べてみたところ、以下のような記事が見つかった。
 http://support.microsoft.com/kb/890981/ja

 これによると、Windows XP Service Pack 2 のセキュリティ上の理由によりローカルフォルダのパス、あるいは共有フォルダのパスを指定されていない場合は、そもそもsubmitされないらしい。
 おそらく、相対パスを使うことで、サーバ上のアクセスしてほしくないエリアに対してアクセスされたり、という危険を回避するものなのではなかろうか。その辺の理由は書いていなかった。
 で、その関係で、aaaとかいう明らかな入力ミスの場合もsubmitされないようになっている感じ。


 ただ、実在するファイルかどうかはチェックしていないようで。
 Aドライブがないときに、A:\test.txt と入力しても、submitはされるようだった。


 firefoxの場合はどうなっているのかと思ったら、どうも直接入力できないようになっているっぽい。
 いろいろ試してわけではないので確証はないけど。そもそも、直接入力できなければ、たしかに問題はなさそう。


 とりあえず、そのままにしておくと、問題ありなので、IEの時だけ砂時計カーソルに変える前にファイルの形式を正規表現でチェックして、問題ある場合はカーソル変更しないようにしておいた。