我试图使用iframe hack来模拟Ajax查询,我可以将文件发送到服务器。它与IE(7,8,9)完美配合。我的ASP.NET服务器接收该文件并可以读取其内容。
但是当我尝试在Chrome或Firefox中使用相同的表单时,ASP.NET服务器仍在接收文件(count = 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);
答案 0 :(得分:0)
我刚刚发现我在表单上(在提交之前)使用以下代码触发的事件是问题所在:
$("form#importForm").ready(function(){ ... });
如果我删除此活动,Chrome和Firefox(以及仍然是IE)将收到我的文件。希望这可以帮助某人。