如何在创建控件后使用 Uploadify 更改设置

How to change settings with Uploadify after control has already been created

我使用以下代码初始化 Uploadify:

$('#file1').uploadifive({
   'buttonClass': 'upload-btn',
   'uploadScript': '/Upload/',
   'fileObjName': 'files',
   'fileType': 'text/xml',
   'formData': { 'uploadType': 'Crew' },
   'onUploadComplete': function(file, data) {
      var results = $.parseJSON(data);
      if (results.error) {
         var info = file.queueItem.find('span.fileinfo');
         if (info) info.text(' - ' + results.error);
         return;
      }

      window.location.href = '@Url.Content("~/Upload/Checkdata/")' + results.id;
   }
});

这有效,但是我需要在单选复选框更改时修改 formData 属性。所以,我试过这个:

$('input[name=UploadType]:radio').change(function () {
   $('#file1').uploadifive({ 'formData': this.value });
});

但是,当该代码运行时,它破坏了 Uploadify 控件(它现在不再上传到任何地方)。我猜是因为它完全 重新初始化 使用所有新设置的控件。

我怎样才能只更新这一项设置?我已经阅读了 Uploadify 文档,其中 none 提到了有关更新设置的内容;只是初始化和调用方法。谢谢!

我找到了一种解决方案,但不确定它是否是正确的处理方式(即,它可能会在未来版本的 Uploadify 中崩溃)。

基本上,您似乎可以保留对配置的引用,并随时更新该对象:

var uploadifySettings = {
   'buttonClass': 'upload-btn',
   'uploadScript': '/Upload/',
   'fileObjName': 'files',
   'fileType': 'text/xml',
   'formData': { 'uploadType': 'Crew' },
   'onUploadComplete': function(file, data) {
      var results = $.parseJSON(data);
      if (results.error) {
         var info = file.queueItem.find('span.fileinfo');
         if (info) info.text(' - ' + results.error);
         return;
      }

      window.location.href = '@Url.Content("~/Upload/Checkdata/")' + results.id;
   }
}

$('input[name=UploadType]:radio').change(function () {
   uploadifySettings.formData.uploadType = this.value;
});

$('#file1').uploadifive(uploadifySettings);