C#with kendo ui - 客户端将文件发送到服务器

时间:2016-02-23 17:50:07

标签: file rest kendo-ui

我正在尝试使用Kendo Ui将.xlsx文件发送到我的REST API。但我迷路了。

我能够拨打我的服务,但我无法获取该文件。我相信我发错了。

不需要保存文件。我只需要读取.xlsx文件即可将数据导入我的数据库。

html(没有表单):

<div>
    <input name="files" id="files" type="file" />
    <button id="importButton">Import</button>
</div>

JS:

$("#files").kendoUpload({
    async: {
         autoUpload: true
    },
    select: onSelect
});

$("#importButton").kendoButton({
    click: onImport
});

function onImport() {
    var formData = new FormData();

    jQuery.each(jQuery('#files')[0].files, function (i, file) {
        formData.append('file-' + i, file);
    });

    $.ajax({
        type: "POST",
        url: url,
        data: formData,
        processData: false,
        cache: false,
        success: function (result) {
            alert("Ok");
        },
        error: function (result) {
            alert("Not Ok");
        }
    });
}

服务器侧

[HttpPost, Route("import")]
public void Import()
{
    var streamProvider = new MultipartMemoryStreamProvider();
    Request.Content.ReadAsMultipartAsync<MultipartMemoryStreamProvider>(streamProvider).ContinueWith((tsk) =>
    {
        foreach (HttpContent ctnt in streamProvider.Contents)
        {
            Stream stream = ctnt.ReadAsStreamAsync().Result;
            // do something
        }
    });
}

1 个答案:

答案 0 :(得分:1)

知道了!

$("#files").kendoUpload({
    async: {
        withCredentials: false,
        saveUrl: url,
        autoUpload: true
    },
    select: onSelect
});

这个答案对我有帮助:Cross domain upload

@Brett是对的,实现了kendUpload的方式。 我认为Import按钮应该具有魔力,但我只需要使用kendoUpload。

谢谢!