首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kendo MVC上传-批上传

Kendo MVC上传-批上传
EN

Stack Overflow用户
提问于 2014-10-03 06:16:29
回答 2查看 5K关注 0票数 1

我使用Kendo上传控件一次上传多个文件(即批处理)。文档很清楚该做什么,但是我看到每个文件都有单独的上传请求,而不是对所有文件的单个上传请求。

这是我的上传控制代码

代码语言:javascript
复制
 Html.Kendo().Upload().Name("files")
     .TemplateId("fileUploadTemplate")
     .Events(e =>
      {
         e.Upload("onFileUpload");
      })
      .HtmlAttributes(new { accept = ".xls,.csv" })
      .Messages(m => m.Select("Select Files..."))
      .Async(a => a.Save("Upload", "Home").AutoUpload(false).Batch(true))

我使用kendo模板对每个上传的文件再添加两个字段(开始和结束日期),如下所示。

这是模板代码。

代码语言:javascript
复制
<script id="fileUploadTemplate" type="text/x-kendo-template">
      #var fileCount = $(".k-file .row").length;#
      #var startId = 'PeriodStart_' + fileCount; #
      #var endId = 'PeriodEnd_' + fileCount; #

      <span class="k-progress"></span>
      <div class="row">
        <div class="col-md-4">
          <span class="k-filename"><strong>#=name#</strong></span>
        </div>
        <div class="col-md-3 nopadding">
          Start: @(Html.Kendo().DatePicker().Name("#=startId#").ToClientTemplate())
        </div>
        <div class="col-md-3 nopadding">
          End: @(Html.Kendo().DatePicker().Name("#=endId#").ToClientTemplate())
        </div>
        <div class="col-md-1 text-right">
          <button type="button" class="k-upload-action"></button>
        </div>
   </div></script>

下面是事件处理js代码,它收集每个文件的开始和结束日期,并构造一个json对象与多个文件一起发送到后端。

代码语言:javascript
复制
function onFileUpload(e) {
    var fileInfo = getUploadFileMetaData();        
    var modelAsJson = JSON.stringify(fileInfo);
    console.log(modelAsJson);
    e.data = {
        modelAsJson: modelAsJson
    };
}
function getUploadFileMetaData() {
    var numOfFiles = $(".k-file .row").length;
    var fileInfoArray = [];
    for (var i=0; i<numOfFiles;i++){
        var fi = {
            FileName: $(".k-filename strong")[i].innerText, //Filename is required as is since it'll be our key
            PeriodStart: $("#PeriodStart_" + i).data('kendoDatePicker').value(),
            PeriodEnd: $("#PeriodEnd_" + i).data('kendoDatePicker').value()
        }
        fileInfoArray[i] = fi;
    }
    return fileInfoArray;
}

因此,如果我选择两个文件上传,我将看到两个不同的请求触发到Controller,而不是1。我肯定我没有看到一些直接的东西,欣赏任何显示和告诉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-13 02:06:29

我在Telerik论坛上找到了答案。

显然这是不可能的。只有当用户一次选择多个文件(Ctrl + Select)时,才可能采用批处理操作模式,而不是当用户通过多次单击select files按钮一个接一个地选择这些文件时。把它放在另一种方式,批处理模式是可能的,只有当上传控件有1行项目-无论是一个或更多的文件。

这里有更多的细节- http://www.telerik.com/forums/batch-mode---not-working

票数 1
EN

Stack Overflow用户

发布于 2019-09-03 22:25:26

我已经设法使Kendo上传完美地在批处理模式下工作。基本上,您可以将所有文件上传到浏览器,然后正常提交表单,并将它们上传到服务器和/或同时删除。

这里有更多详细信息:https://kolaberate.com/Articles/2019/08/29/implementing-batch-mode-using-kendo-upload-control-for-asp-net-core/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26174104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档