Kendo UI 异步上传在 Internet Explorer 中不起作用

Posted

技术标签:

【中文标题】Kendo UI 异步上传在 Internet Explorer 中不起作用【英文标题】:Kendo UI Async Upload not working in Internet Explorer 【发布时间】:2013-07-05 21:44:05 【问题描述】:

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

代码示例如下:

_EditForm.cshtml(上传位置)

@(html.Kendo().Upload()
    .Name(string.Format("upload0", "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" )))

控制器动作方法

[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("");

【问题讨论】:

@AndreiMikhalevich - 抱歉,刚刚更新了问题以包含该问题。这是第 9 版。 @AndreiMikhalevich 看起来就是这样,这就是为什么我更困惑为什么它可以在 Chrome 中运行,而不是在 IE 中运行。 也许你的 _fileSystem 对象工作不正确? 我正在广泛使用它,还没有看到任何其他问题。这确实很奇怪。 【参考方案1】:

正如另一篇帖子所说,“欢迎收看‘为什么 Internet Explorer 如此糟糕’的第 52,245,315 集:

事实证明,当您在 Internet Explorer 中对 HttpPostedFileBase 执行 file.FileName 时,它认为您需要 本地 计算机上的文件的整个路径。这显然是 IE 独有的东西,因为 Chrome 和 Firefox 似乎是正确的。

当您只想要实际FileName时,请确保执行以下操作:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

我看到了那个帖子,但它并没有真正回答我的问题。服务器似乎在返回它应该是什么,但它实际上并没有保存文件。

以上是关于Kendo UI 异步上传在 Internet Explorer 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤文件kendo-ui上传?

更改 Kendo UI 上传小部件的文本

Kendo UI - 上传按钮 - 自定义

Angular 2 上传组件的 Kendo UI - 上传方法

Kendo UI 多文件上传器在服务器迁移后崩溃

部署不渲染 Kendo UI