iframe ハックを使用して、サーバーにファイルを送信できる Ajax クエリをシミュレートしようとしています。IE(7、8、9)で完全に機能しています。私の ASP.NET サーバーはファイルを受信し、その内容を読み取ることができます。
しかし、Chrome または Firefox で同じフォームを使用しようとすると、ASP.NET サーバーはまだファイルを受信していますが (カウント = 1)、ファイルは空です (contentLength = 0)。Fiddler では、IE を使用しているときはファイルの内容を見ることができ、Chrome および Firefox から送信された空のファイルを見ることができます。
これが私の簡略化されたHTMLです
<form id="importForm" method="post" enctype="multipart/form-data">
<input type="file" id="importFileUpload" name="importFileUpload" class="importFileUpload" />
<input id="importNewListButton" type="button" class="importexportButton" value="send it" />
</form>
<iframe id="importUploadFileIframe" name="importUploadFileIframe" src="" style="width:0;height:0;border:0px solid #fff;display:none;"></iframe>
これが私の単純化されたjQueryです
$("form#importForm").attr("action", "myScript.aspx");
$("form#importForm").attr("target", "importUploadFileIframe");
$("form#importForm").submit();
そして、これが私の単純化されたC#です
HttpPostedFile file = Request.Files[0];
Helper.log("file = " + file.FileName);
Helper.log("file = " + file.ContentType);
Helper.log("file = " + file.ContentLength);