私は最近、ファイルのアップロードに jQuery / iframe ソリューションを実装しましたが、かなり厄介な問題に遭遇しました (もちろん IE のみ)。
アップロード ボタンをクリックしてアップロードするファイルを選択すると、ファイルを含むフォームが iframe に自動的に送信されます。ただし、コントローラーで送信を処理してアクションを起動するには、ページの任意の場所をクリックする必要があります。
「変更」機能の実行が停止しているように見える iframe がフォーカスを得るという問題だと思いますが、完全にはわかりません。おそらく、iframe がフォーカスを元のページに戻して実行を継続するには、ある種のオンロード機能が必要でしょうか?
コード:
フォームとファイルのアップロード:
<form id="attachForm" action="<%= Url.Action("TestUpload","Images") %>"
method="post" enctype="multipart/form-data" target='upload_target' >
<input id='actualupload' type='file' multiple="" name='file' />
</form>
<iframe id='upload_target' name='upload_target' src=''
style="width:0; height: 0; border: 0;" frameborder="0"></iframe>
フォームを送信するjQuery:
$("#actualupload").live('change',function()
{
$("#attachForm").submit();
alert("Fired!"); //This only occurs after clicking on the screen after the
//file selection.
});