AjaxFileUpload автоматически загружать файл после выбора

У меня есть стандартный элемент управления AjaxFileUpload

<asp:AjaxFileUpload ID="upManager" CssClass="fileUpload" runat="server" OnUploadComplete="upManager_UploadComplete" />

И вместо того, чтобы нажимать "Загрузить", я просто хочу, чтобы файл загружался автоматически после того, как он выбрал файл. Есть ли способ сделать это?

3 ответа

Решение

Добавить ссылку на этот скрипт в Scripts коллекция ToolkitScriptManager контролировать или просто положить его в самом низу страницы:

var legacyAddToQueue = Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue;
Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue = function(element){
    legacyAddToQueue.apply(this, [element]);
    this._doUpload();
}

Хорошо работает из консоли на этой странице: Демонстрация AjaxFileUpload

Кроме того, по моему мнению, должно быть лучше настроить источники ACT и добавить новые свойства, такие как UploadAutomatically к этому контролю. Дайте мне знать, если вы предпочитаете эту опцию и нуждаетесь в дополнительных деталях о том, как подобрать такой персонал

ОБНОВЛЕНО: попробуйте этот скрипт для новой AjaxFileUpload (должен работать для новых и старых версий, но еще не протестирован)

if (Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue) {
    var legacyAddToQueue = Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue;
    Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue = function (element) {
        legacyAddToQueue.apply(this, [element]);
        this._doUpload();
    };
}else if(Sys.Extended.UI.AjaxFileUpload.Control){
    var legacyaddFileToQueue = Sys.Extended.UI.AjaxFileUpload.Control.prototype.addFileToQueue;
    Sys.Extended.UI.AjaxFileUpload.Control.prototype.addFileToQueue = function(fileItem){
        if(legacyaddFileToQueue.apply(this, [fileItem])){
            this._isUploading = true;
            this.enableControls(this._isUploading);
            this._processor.startUpload();
        }
    };
}

Это работает в новейшем инструменте управления

<asp:AjaxFileUpload onchange="$('.ajax__fileupload_uploadbutton').trigger('click');" runat="server" />

Ты прав. Просто замените его на

$(".ajax__fileupload").bind("change", function () { setTimeout(function () { $('.ajax__fileupload_uploadbutton').trigger('click'); }, 100); });
$(".ajax__fileupload_dropzone").bind("drop", function () { setTimeout(function () { $('.ajax__fileupload_uploadbutton').trigger('click'); }, 100); });
Другие вопросы по тегам