【问题标题】:Custom event on Kendo UI Upload Widget in Async Mode异步模式下 Kendo UI 上传小部件上的自定义事件
【发布时间】:2021-12-05 12:33:55
【问题描述】:

我在我的项目中使用 Kendo UI Upload,文件以异步方式上传。由于“autoUpload:false”,在javascript中配置了一个上传事件,该事件会在上传按钮单击时为每个文件触发。 有没有办法在实际上传事件之前触发另一个事件,我可以检查用户是否可以上传文件?(或任何自定义逻辑) 例如新事件应该只触发一次,如果逻辑返回 true,则调用实际的上传调用(针对每个文件),否则返回 false 并显示错误。

【问题讨论】:

  • 看看这个 - jpllosa.blogspot.com/2021/02/… - 它有 autoUpload: false 集。正如答案已经建议的那样,您可以将自定义逻辑放在上传事件处理程序中。

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


【解决方案1】:

您可以将自定义逻辑放入上传事件的处理程序中。如果您决定不继续上传,您可以使用 e.preventDefault() 取消它。

这里有一个很好且简单的例子:https://docs.telerik.com/kendo-ui/api/javascript/ui/upload/events/upload 该链接中的示例代码如下:

<input type="file" name="files" id="photos" />
<script>
    $("#photos").kendoUpload({
        async: {
            saveUrl: "http://my-app.localhost/save",
            removeUrl: "http://my-app.localhost/remove"
        },
        upload: onUpload
    });

    function onUpload(e) {
        // An array with information about the uploaded files
        var files = e.files;

        // Checks the extension of each file and aborts the upload if it is not .jpg
        $.each(files, function () {
            if (this.extension.toLowerCase() != ".jpg") {
                alert("Only .jpg files can be uploaded")
                e.preventDefault();
            }
        });
    }
</script>

【讨论】:

  • 但是这个方法被每个文件调用。我想在单击上传按钮时调用一个方法。还是只调用一次?
  • 我相信它只被调用一次。添加一些console.log语句或调试器进行确认。
  • 当前正在为每个文件调用它。所以我真正需要做的是限制在给定时间段内上传的文件数量假设 1 分钟。目前,我们正在使用 web api 调用来上传,因此对于每个文件,都会进行 aync api 调用以进行上传。有什么想法吗?
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2014-09-16
  • 2013-01-03
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多