Можно ли расширить обратные вызовы, реализованные в jquery.fileupload-ui.js? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть основной MVC-проект asp.net, где я использую пакет blueimp-file-upload из здесь для загрузки больших файлов. Пакет поставляется с jquery.fileupload-ui.js, где реализованы обратные вызовы add, send, done, fail и т. Д.

Но мне нужно сделать дополнительные вещи в обратных вызовах add и done для вызова метода Web API. Я смог сделать это только путем повторной реализации обратных вызовов на моей странице MVC, которая имеет вызов API, а также исходный код обратного вызова в jquery.fileupload-ui.js.

Есть ли такая альтернатива? Мне не нужно управлять кодом, который копируется из оригинальной функции обратного вызова? Спасибо!

Например, ниже приведен обратный вызов для завершения, когда я добавил вызов API.

done: function (e, data) {

    //This is my API call

     var additionalData = {
        FileHandle: data.files[0].name,
        Request: '@Model.Request'
     };

    $.ajax({
        url: 'UploadAPI/Complete',
        method: 'POST',
        dataType: 'json',
        data: additionalData,
        success: function (result) {
        }
    });

    //Below is copied from the original callback implementation.

    if (e.isDefaultPrevented()) {
        return false;
    }

    var that =
        $(this).data('blueimp-fileupload') || $(this).data('fileupload'),
      getFilesFromResponse =
        data.getFilesFromResponse || that.options.getFilesFromResponse,
      files = getFilesFromResponse(data),
      template,
      deferred;
    if (data.context) {
      data.context.each(function(index) {
        var file = files[index] || { error: 'Empty file upload result' };
        deferred = that._addFinishedDeferreds();
        that._transition($(this)).done(function() {
          var node = $(this);
          template = that._renderDownload([file]).replaceAll(node);
          that._forceReflow(template);
          that._transition(template).done(function() {
            data.context = $(this);
            that._trigger('completed', e, data);
            that._trigger('finished', e, data);
            deferred.resolve();
          });
        });
      });
    } else {
      template = that
        ._renderDownload(files)
        [that.options.prependFiles ? 'prependTo' : 'appendTo'](
          that.options.filesContainer
        );
      that._forceReflow(template);
      deferred = that._addFinishedDeferreds();
      that._transition(template).done(function() {
        data.context = $(this);
        that._trigger('completed', e, data);
        that._trigger('finished', e, data);
        deferred.resolve();
      });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...