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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章