Kendo上传访问文件?

时间:2016-03-07 10:34:11

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

VB Method Sig

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

Razor Block

@(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"))
   )

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

订阅Select事件以控制上传

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

如果您不想autoUpload和preventDefault,您还可以删除autoUpload并使用任何Kendo操作来开始向服务器传输文件(我忘了并且他们的文档非常糟糕)。