Kendo UI Async Upload无法在Internet Explorer中运行

时间:2013-07-08 14:04:33

标签: asp.net-mvc asp.net-mvc-4 kendo-ui asyncfileupload kendo-asp.net-mvc

我正在尝试在异步模式下使用Kendo UI Upload(MVC包装器)。事情似乎在Chrome中运行良好,但在IE中没有这样的运气(截至目前仅在IE 9中测试过)。当它启动上传时,我可以看到它命中我的操作方法,并且请求包含我期望的数据,但实际上没有任何内容被保存。

代码示例如下:

_EditForm.cshtml (上传的位置)

@(Html.Kendo().Upload()
    .Name(string.Format("upload{0}", "background"))
    .Multiple(true)
    .Events(evt => evt.Success("refreshBackgroundImages"))
    .Messages(msg => msg.DropFilesHere("drag and drop images from your computer here")
                        .StatusUploaded("Files have been uploaded"))
    .Async(a => a.AutoUpload(true)
                 .SaveField("files")
                 .Save("UploadImage", "Packages", new { siteId = Model.WebsiteId, type = "background" })))

Controller ActionMethod

[HttpPost]
public ActionResult UploadImage(IEnumerable<HttpPostedFileBase> files, Guid siteId, string type)
{
        var site = _websiteService.GetWebsite(siteId);
        var path = Path.Combine(_fileSystem.OutletVirtualPath, site.Outlet.AssetBaseFolder);
        if (type == "background")
        {
            path = Path.Combine(path, _backgroundImageFolder);
        }
        else if (type == "image")
        {
            path = Path.Combine(path, _foregroundImageFolder);
        }
        foreach (var file in files)
        {
            _fileSystem.SaveFile(path, file.FileName, file.InputStream, file.ContentType, true);
        }
        // Return empty string to signify success
        return Content("");
}

2 个答案:

答案 0 :(得分:8)

正如另一篇文章所说,“欢迎来到第52,245,315集'为什么Internet Explorer糟透了':

事实证明,当您在Internet Explorer中的file.FileName上执行HttpPostedFileBase时,它会认为您希望本地计算机上的文件的整个路径。它显然只是IE浏览器,因为Chrome和Firefox似乎都是正确的。

如果您只想要实际 FileName,请务必执行以下操作:

var filename = Path.GetFileName(file.FileName);

答案 1 :(得分:4)

问题是当您实际尝试保存文件并从服务器发回成功响应时。我不认为你的演示正在做任何这些。 ie9中的iframe没有收到服务器的响应。浏览器认为响应是一个下载,即使它只是一个纯文本json响应。我调试了iframe上的on load事件永远不会被触发的事实,因此需要处理此响应的onload处理程序没有做任何事情。在所有其他浏览器中,这是有效的。

来源:http://www.kendoui.com/forums/kendo-ui-web/upload/async-uploader-and-ie-9-not-working.aspx