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

我正在尝试在异步模式下使用 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" })))

控制器动作方法

[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 对象工作不正确?
  • 我正在广泛使用它,还没有看到任何其他问题。这确实很奇怪。

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


【解决方案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

    【讨论】:

    • 我看到了那个帖子,但它并没有真正回答我的问题。服务器似乎在返回它应该是什么,但它实际上并没有保存文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2015-03-16
    相关资源
    最近更新 更多