code: function () {
          var self = this;
  
          var input = DomUtils.create('input', {
            type: 'file',
            id: self._id + '-browse',
            accept: self.settings.accept
          });
  
          self._super();
  
          $(input).on('change', function (e) {
            var files = e.target.files;
  
            self.value = function () {
              if (!files.length) {
                return null;
              } else if (self.settings.multiple) {
                return files;
              } else {
                return files[0];
              }
            };
  
            e.preventDefault();
  
            if (files.length) {
              self.fire('change', e);
            }
          });
  
          // ui.Button prevents default on click, so we shouldn't let the click to propagate up to it
          $(input).on('click', function (e) {
            e.stopPropagation();
          });
  
          $(self.getEl('button')).on('click', function (e) {
            e.stopPropagation();
            input.click();
          });
  
          // in newer browsers input doesn't have to be attached to dom to trigger browser dialog
          // however older IE11 (< 11.1358.14393.0) still requires this
          self.getEl().appendChild(input);
        }
docs: Called after the control has been rendered.
  
  @method postRender