code: function(id, params){
          var file = this._files[id],
              name = this.getName(id),
              size = this.getSize(id);
                  
          this._loaded[id] = 0;
                                  
          var xhr = this._xhrs[id] = new XMLHttpRequest();
          var self = this;
                                          
          xhr.upload.onprogress = function(e){
              if (e.lengthComputable){
                  self._loaded[id] = e.loaded;
                  self._options.onProgress(id, name, e.loaded, e.total);
              }
          };
  
          xhr.onreadystatechange = function(){            
              if (xhr.readyState == 4){
                  self._onComplete(id, xhr);                    
              }
          };
  
          // build query string
          params = params || {};
          params['qqfile'] = name;
          var queryString = qq.obj2url(params, this._options.action);
  
          xhr.open("POST", queryString, true);
          xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
          xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
          xhr.setRequestHeader("Content-Type", "application/octet-stream");
          xhr.send(file);
      }
docs: Sends the file identified by id and additional query params to the server
  @param {Object} params name-value string pairs