質問: e.datatransfer.files; ``` のような形でドロップされたファイルをinputに渡す事が出来るのですが、firefox/ieだと 上書きが出来ず困っています。 質問としましては 1.firefox/ieでもinputにファイルを渡す方法を知りたい 2.仕様上不可能であるなら他の方法を知りたい です。 ドラッグ&ドロップによるファイルアップロードの解説を一通り見たのですがどれも ajaxを使った非同期通信ばかりで今回の要件に合いませんでした。 またIEのバージョンについては11でお考え下さい。 どうぞよろしくお願い致します。
回答: FireFoxで似たような壁にぶつかって悩んだことがあります。 その時の結論はinput type='file'を使うのをやめて、ファイルアップロード部分は自力で行う、というもので、ファイルアップロード部分はsubmitに頼らず実装しなおしました。 手順としては、 1. なにがしかのタグでファイル名を表示しておき、実際にドロップされたファイルの情報は別に保持しておく 2. アップロード用のボタン(input type='button')を用意する(submitは使いません) 3. アップロード用のボタンのonclickハンドラで、他のフォーム要素のデータと一緒に保持しているファイルについてもPOST処理を行う(XMLHttpRequestを使います)。 もっとスマートなやり方があったかもしれませんが、ご参考まで。