Kendo UI 多个文件上传问题

Kendo UI multiple files upload issue

我正在使用 Kendo 文件上传控件上传多个文件。只有少数文件被上传(尤其是第一个和最后一个)或一些随机文件。有解决办法吗?

Index.cshtml :

<input name="files" id="files" type="file" multiple="multiple" />

JS 文件:

$("#files").kendoUpload
    ({
        async: {
            saveUrl: "/Controller/GetUserUploadedFiles",
            removeUrl: "/Controller/Remove",
            autoUpload: false,
            allowmultiple: true
        },
        select: function (e) {
            onSelect(e);
        },
        success: function (e) {
        },
        error: function (e) {
        }
    });

//控制器方法

[HttpPost]
   public void GetUserUploadedFiles(IEnumerable<HttpPostedFileBase> files)
   {   
     //Custom logic here
   }

此外,如果我可以在一个控制器方法调用中将所有文件都设置为可枚举的,而不是为多个文件调用多次,那就太好了。

我有什么遗漏或做错了什么吗?

谢谢, 斯里尼

IIRC,kendo 批处理选项只会在同时 selected 时将文件作为集合上传(浏览,然后 select 多个文件)。一旦您 select 附加文件,它们将在另一个请求中发送。在同一请求期间强制发布文件的唯一方法是使用同步模式而不是异步模式。祝你好运。

此代码将上传在 Kendo 上传中选择的所有文件,然后对每个文件进行 运行 代码。

[HttpPost]
public void GetUserUploadedFiles()
{   
    Request.Content.LoadIntoBufferAsync().Wait();
    var result = Task.Factory
                 .StartNew(() => Request.Content.ReadAsMultipartAsync().Result,
                  CancellationToken.None,
                  TaskCreationOptions.LongRunning,
                  TaskScheduler.Default).Result;

    var contents = result.Contents;
    HttpContent httpContent = contents.First();        

    Stream file = httpContent.ReadAsStreamAsync().Result;

    if (file.CanRead)
    {
        // Code that will be executed on each file
    }
}

您可以通过以下方式获取文件名:

string filename = httpContent.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);

您可以通过以下方式获取上传文件的媒体类型:

string uploadedFileMediaType = httpContent.Headers.ContentType.MediaType;