使用Chrome和Firefox收到的文件为空,但IE不是

时间:2012-09-10 21:28:59

标签: c# jquery html iframe file-upload

我试图使用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);

1 个答案:

答案 0 :(得分:0)

我刚刚发现我在表单上(在提交之前)使用以下代码触发的事件是问题所在:

$("form#importForm").ready(function(){ ... });

如果我删除此活动,Chrome和Firefox(以及仍然是IE)将收到我的文件。希望这可以帮助某人。