【问题标题】:Kendo Upload access files?剑道上传访问文件?
【发布时间】:2016-06-20 20:50:49
【问题描述】:

我正在使用 Kendo UI 上传控件。我已经这样定义了 Kendo UI 上传:

 @(Html.Kendo().Upload()
            .Name("files")
            .Events(events => events.Select("onSelectFiles"))
            )

并在提交表单时上传文件(使用telerik定义的基本上传方法)。

现在,我想使用按钮和 ajax 调用执行上传,所以我需要将选定的文件作为调用的参数发送。 异步上传不适合我的情况,因为我想通过按钮自己控制上传。 如何访问选定的文件?

【问题讨论】:

    标签: asp.net-mvc-4 file-upload kendo-ui


    【解决方案1】:

    我们实际上在工作中使用剑道来制作我们的 UI。 Ajax 上传按钮还不错。这是一个示例 VB 动作和 Razor(我选择 VB 是因为它是这个应用程序的语言。如果你需要 C#,它是 ez 来翻译)

    需要注意的主要事项:Razor 中的 SaveField 字符串必须是用于控制器方法中的 IEnumerable HttpPostedFileBase arg 的名称,否则文件将不会传递给操作。这是剑道的怪癖。

    VB 方法签名

    Public Function UploadFile(files As IEnumerable(Of HttpPostedFileBase)) As ActionResult
    //dostuff
    

    剃刀块

    @(Html.Kendo().Upload()
       .Name("previewFile")
       .Multiple(false)
       .Async(a => a
          .Save("UploadFile", "PosterSignup")
          .Remove("RemoveFile", "PosterSignup")
          .SaveField("files")
          .AutoUpload(true)
       )
       .Events(e => e
          .Select("onPreviewSelect"))
       )
    

    razor 代码中的 Select 事件可以是用于执行检查或对话框提示的函数,您可以通过执行 preventDefault() 来强制它取消自动上传。阿卡

    订阅Select事件控制上传

    function onPreviewSelect(e) {
       if(//someCheck){
          e.preventDefault();
       }
    }
    

    如果您不想 autoUpload 和 preventDefault 您也可以删除 autoUpload 并使用任何暴露的 Kendo 操作来开始将文件流式传输到服务器(我忘记了,他们的文档很可怕)。

    【讨论】:

      【解决方案2】:

      搜索“使用 javascript 上传文件”显示了大量结果。这是六年前的一个回答:jQuery Ajax File Upload。如果您的目标浏览器使用的是supported,您还可以阅读using files from web applications 并使用文件API(更新的)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-19
        • 2013-11-07
        相关资源
        最近更新 更多