AsyncFileUpload control - PullRequest
       12

AsyncFileUpload control

1 голос
/ 25 ноября 2010

Относительно элемента управления AsyncFileUpload в .net, элемент управления выполнит загрузку файла, как только я выберу файл.Я обеспокоен тем, можно ли отключить загрузку после выбора файла, чтобы можно было асинхронно обрабатывать загрузку с помощью кнопки отправки.

Ответы [ 3 ]

1 голос
/ 17 октября 2012

Я знаю, что это старо, но я какое-то время ломал голову над этим, так что для всех, кого это может заинтересовать.

Моей первой мыслью было отключить ввод файла под элементом управления.

Мне удалось отключить управление, но, к сожалению, оно перестало работать.Когда сервер запустил 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();
    }
}
0 голосов
/ 25 ноября 2010

Простой ответ: Нет. У меня были такие же проблемы с асинхронной загрузкой, как и те.Мой совет: держитесь подальше от него, если вам нужно контролировать загрузку с помощью кнопки, добавлять и удалять выбранные файлы (это вам, вероятно, понадобится позже) и использовать некоторые манипуляции с JavaScript.

Flash-компонент, который может быть легко интегрирован с .NET.Он предлагает несколько вариантов JavaScript и событий.: D

Проверьте следующие ссылки:

Официальный сайт

Демонстрация

0 голосов
/ 25 ноября 2010

Насколько я знаю, единственным событием, выставленным AsyncFileUpload, является событие UploadComplete и UploadError. Нет событий, которые бы предоставляли функциональность для ручной загрузки. Возможно, какой-то трюк в JavaScript мог бы сделать это, но я не видел такого обходного пути раньше.

...