2015-05-17 5 views
0

Я использую загрузчик файлов jQuery в своем Магистраль.Загрузка файла jQuery POST data append issue

Я столкнулся проблемой в данных POST, то есть, когда я загрузить данные, то только файл , который выбран будет добавлен в объекта POST и один идентификатор который инициализируется в функции initializeFileUpload в FormData и эта функция является initializeFileUpload нагрузка в OnLoad

this.ui.uploadAppFile я s JQuery объект

initializeFileUpload: function() { 
       var that = this, 
        file = ""; 
       var options = { 
        url: FSGlobals.baseURL + 'requests/req_bu_files/file', 
        maxFileSize: 5000000, // 5MB 
        formData: { 
         "Id": that.requestHeaderMod.get("id"), 
        }, 
        add: function(e, data) { 
         file = (data && data.files[0] && data.files[0].name) || ""; 
         that.manualPostData = data; 
         that.ui.filePlaceholder.val(file).change(); 
        } 
       }; 

       if ($('html').hasClass('ie9') || $('html').hasClass('lt-ie9')) { 
        options.forceIframeTransport = true; 
       } else { 
        options.dataType = 'json'; 
       } 

       this.ui.uploadAppFile.fileupload(options); 
      } 

У меня есть одна кнопка Отправить и на время отправки я должен добавить еще два идентификаторов в пост Object.

UploadAction: function() { 
       var that = this; 
       this.manualPostData.submit(). 
       done(function(data, textStatus, jqXHR) { 

        }) 
        .fail(function(jqXHR, textStatus, errorThrown) { 

        }); 
       } 

Сейчас я пытаюсь найти FormData в this.manualPostData, но я не могу найти FormData в нем.

После Submit я вижу в сети он показывает объект FormData с файлом [] и Id, который объявлен в initializeFileUpload

ответ

0

Я нашел одно решение:

Перед представить передать свои значения FormData.Но, как вы можете см., Есть еще один способ: i.e initializeFileUpload Вы должны инициализировать настройку загрузчика файлов и все прочее. , потому что если нет, то на время отправки вы не получите this.manualPostData как файл вверх-погрузчик объекта

UploadAction: function() { 

      var that = this; 
      this.manualPostData.formData = { 
       "requestId": that.requestHeaderMod.get("id"), 
       "status": false, 
       "appId": this.ui.appListSelect.select2("val"), 
       "appDimensionId": this.ui.appDimListSelect.select2("val"), 
       "actionCode": this.ui.actionCodeSelect.select2("val") 
      } 
      this.manualPostData.submit() 
      .done(function(data, textStatus, jqXHR) { 
        // 
      }) 
      .fail(function(jqXHR, textStatus, errorThrown) { 
        //Fail 

      }); 

И пройти FormData = {} в initializeFileUpload другой разумный вы должны использовать

$.extend(OLd Object, New Object); 

на время отправки

0

Согласно документации, вы можете использовать метод представить, чтобы добавить дополнительные значения запрос:

https://github.com/blueimp/jQuery-File-Upload/wiki/Options#submit

Вот скрипка я создал, чтобы продемонстрировать, как этот метод может быть переопределен.

https://jsfiddle.net/LtzvL6s9/

submit: function(e, data) { 
    console.log('submit',data, data.formData) 
    data.formData = $.extend({}, {'other': 2}, data.formData); 
} 

я не смог отправить оригинал идентификатор, а затем добавить дополнительные данные в форме, но вы можете добавить все, что нужно по методу представить.

Надеюсь, что это поможет решить вашу проблему.