1

关于 .net 中的 AsyncFileUpload 控件,一旦我选择一个文件,该控件将执行文件上传。我担心的是,一旦我选择了一个文件,是否可以禁用上传,以便我可以使用提交按钮异步处理上传。

4

3 回答 3

1

我知道这已经过时了,但我在这个问题上花了一段时间,所以对于任何可能感兴趣的人。

我的第一个想法是禁用控件下方的文件输入。

我能够禁用控件,但不幸的是,它停止工作。当服务器触发 AsyncFileUpload_UploadComplete 时,输入被禁用,因此没有要读取的文件。

<script>
function disableFileUpload(on) {
    if (on) {
        $('#ajax-file-input input:file').attr('disabled', true);
    } else {
        $(#ajax-file-input 'input:file').attr('disabled', false);
    }
}
function AsyncFileUpload_CheckExtension(sender, args) {
    disableFileUpload(true);
    return true;
}
function AsyncFileUpload_OnClientUploadComplete(sender, args) {
    disableFileUpload(false);
    var data = eval('(' + args.d + ')');
    for (var key in data) {
        var obj = data[key];
        for (var prop in obj) {
            console.log(prop + " = " + obj[prop]);
        }
    }
    doThingsWith(data);
}
</script>
<div id="ajax-file-input">
<ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1" 
                    OnUploadedComplete="AsyncFileUpload_UploadComplete"
                    OnClientUploadStarted="AsyncFileUpload_CheckExtension" 
                    OnClientUploadComplete="AsyncFileUpload_OnClientUploadComplete" 
                    runat="server" />
</div>

我最终在控件顶部放置了一个半透明的 png 并显示和隐藏它以使控件无法访问。

希望这可以帮助。

function disableFileUpload(on) {
    if (on) {
        $("#file-disabled").show();
    } else {
        $("#file-disabled").hide();
    }
}
于 2012-10-17T18:07:44.823 回答
0

据我所知,唯一暴露的事件AsyncFileUploadUploadComplete事件和UploadError. 没有专门公开手动启动上传功能的事件。也许 JavaScript 中的一些技巧可以做到这一点,但我以前从未见过这样的解决方法。

于 2010-11-25T09:44:49.930 回答
0

简单的答案是否定的。我也遇到过类似的异步上传问题。我的建议是,如果您需要使用按钮控制上传、添加和删除选定文件(稍后您可能会需要)并使用一些 javascript 操作,请远离他。

搜索 SWFUpload,这是一个可以轻松与 .NET 集成的 flash 组件。它提供了多个 javascript 选项和事件。:D

检查以下链接:

官方网站

示范

于 2010-11-25T18:55:59.557 回答