Internet Explorer 10 の input type=file において、選択したファイルのアップロードをキャンセルできない

現象

Internet Explorer 10 および 11 において、ファイル アップロード コントロール (input type=file) を使用するシナリオを考えます。
ユーザーはコントロールの [参照] ボタンを押下してなんらかのファイルを選択します。
この時、コントロールのテキスト ボックス部分をフォーカスして [Backspace]、[Delete] または [ESC] キーを押下すると、選択したファイルのパス文字列が消去されます。
しかしながら、実際にはファイルの選択は解除されず、フォームのサブミット操作を行うと選択したファイルの情報が Web サーバーに送信されます。

原因

Internet Explorer 10 および 11 では、HTML5 仕様で定義されている複数ファイルのアップロードに対応するため、選択したファイルのハンドルの管理方法を変更しています。
以前のバージョンと異なり、ファイルを選択した時点でファイル ハンドルを取得する動作変更に起因して発生します。

解決方法

Internet Explorer の設定により、以前のバージョンと同じ動作に戻す方法はありません。

回避策

Web ページの記述を変更できる場合は、以下のように [Backspace]、[Delete] または [ESC] キーの押下を検出し、ファイル アップロード コントロールを作成しなおす方法でファイルの選択を解除できます。

<input type="file" name="testfile" id="testfile" onkeydown="if ((event.keyCode == 8) || (event.keyCode == 27) || (event.keyCode == 46)) {var file = this.cloneNode(false); this.parentNode.insertBefore(file, this); this.removeNode(true);}">

関連情報

ファイル アップロード コントロール (input type=file) については、次のマイクロソフト Web サイトを参照してください。

input type=file element | input type=file object
プロパティ

文書番号:2886300 - 最終更新日: 2016/09/29 - リビジョン: 1

Windows Internet Explorer 10, Internet Explorer 11

フィードバック