问题出在 IE 中,当我提交文件时,ajax 加载程序 gif 在文件加载时不会旋转。该页面被锁定,即使它应该是 Ajax。在 FF 中,图像确实旋转。在这两种浏览器中,内置的加载指示器会在文件上传时旋转。我已经尝试在 IE 中尝试使用 preventDefault() 来防止浏览器加载指示器旋转,并且 gif 旋转,但是即使它仍然命中应该上传文件的 javascript 块,也没有任何内容发布到服务器。不幸的是,我只使用 JQuery,无法部署任何其他第三方插件或库。此外,不能使用 HTML5,客户端混合了旧版和新版浏览器。编码:
编辑:我现在可以让图像旋转,然后点击控制器,使用下面的代码。但是,在控制器中 Request.Files 是空的!在原始代码中,当调用 preventdefault 时,原始 ajax 调用正在发布到控制器/控制器/上传文件,并返回 404。所以我将 ajax 调用中的路径从客户端/上传文件更改为上传文件,现在它到达控制器。但是,为什么请求文件为空是没有意义的。
$("form").submit(function (event) {
event.preventDefault()
});
$('#submit').click(function (data) {
$('#progImg').fadeTo(0, 1);
$(".mgnlft").css("visibility", "visible");
var filename = $("#file").val();
$.ajax({
type: "POST",
url: "uploadFile",
enctype: 'multipart/form-data',
data: {
file: filename
},
success: function () {
$('#progImg').fadeTo(0, 0);
}
});
//data.preventDefault()
});
<input name="File" type="file" style="width: 380px;" id="file" />
<p>
<input type="submit" value="Upload" id="submit"/>
</p>
控制器:
public ActionResult uploadFile(string file)
{
var destinationFolder = mypath;
foreach (var name in Request.Files)
{
var postedFile = Request.Files[0];
if (postedFile.ContentLength > 0)
{
var fileName = Path.GetFileName(postedFile.FileName);
var path = Path.Combine(destinationFolder, fileName);
postedFile.SaveAs(path);
}
}
return View("submitfile");
}