モーグルとカバとパウダーの日記 このページをアンテナに追加 RSSフィード Twitter

モーグルやカバ(EXカービングスキー)、山スキー(BC)の山行記録などがメインの日記です。
いろんな条件のいろんなところを、その時々の条件にあった滑り方で楽しむ、フリースキーをして遊んでいます。

検索で来られた方は、上の検索窓から再度検索していただくか、右サイドバーのカテゴリーやトピックスの項目で絞り込んでみてください。
仕事柄、コンピュータ系のネタも多いので、スキー関連ネタだけ読みたい方は[ski]、コンピュータ関連ネタは[pc]、スパム関連ネタは[spam]で絞り込んでください。

2014-04-03 (Thu)

[]IE8アップロードに失敗する問題 IE8でアップロードに失敗する問題を含むブックマーク IE8でアップロードに失敗する問題のブックマークコメント

とあるWebアプリIE8からだとアップロードが出来ない、という相談を受けました。

javascriptというかjQueryを利用して、ajaxでファイルをアップロード出来るのですが、IE8だと動かないというものです。


javascriptのソースを調べてみると、FormDataというクラスが利用されており、これはいわゆるHTML5なクラスのため、IE9以前だと使えないということがわかりました。

IE9以前でこういう用途の場合だとiframeを使って送る手法で実現するようです。


IE9以前でもアップロード行えるようにするjQueryプラグインは以下のようなものがありました。

今回自分は、よりシンプルな jquery.upload.js をベースに修正して利用したのですが、最近はメンテされていないようなので、jQuery File Upload を使ったほうが良いと思います。

FormDataが利用可能な環境かを判定し、利用可能な場合はjquery.upload.jsのuploadを利用し、それ以外のモダンブラウザなら通常のajaxを使ってアップロードするようにしてみました。


とりあえずこれで動くようになったのですが、受け側のサーバで一部問題が起きました。

元々のソースはcontent-typeを見てファイル種を判断していたのですが、このiframeを使って送る手法だとcontent-typeがうまく送られないようで、その判定でエラーになってしまいました。

そこで送られてきたファイル名の拡張子を見て判断するように変更して回避しました。


この件を色々調べていると、IE9以前でのファイルアップロードは他にもいろんな理由で問題が起きるようです。

トラックバック - http://d.hatena.ne.jp/stealthinu/20140403/p1
リンク元