2

问题出在 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");           
    }
4

0 回答 0