docs: function(params, callback) {
          /**
           * Callback for QB.content.createAndUpload(params, callback).
           * @callback createAndUploadFileCallback
           * @param {object} error - The error object
           * @param {object} response - The file object (blob-object-access)
           */
          var _this = this,
              createParams= {},
              file,
              name,
              type,
              size,
              fileId;
  
          var clonedParams = JSON.parse(JSON.stringify(params));
  
          clonedParams.file.data = "...";
  
          file = params.file;
          name = params.name || file.name;
          type = params.type || file.type;
          size = params.size || file.size;
  
          createParams.name = name;
          createParams.content_type = type;
  
          if (params.public) {
              createParams.public = params.public;
          }
  
          if (params.tag_list) {
              createParams.tag_list = params.tag_list;
          }
  
          // Create a file object
          this.create(createParams, function(err, createResult){
              if (err) {
                  callback(err, null);
              } else {
                  var uri = parseUri(createResult.blob_object_access.params),
                      uploadUrl = uri.protocol + "://" + uri.authority + uri.path,
                      uploadParams = {url: uploadUrl},
                      data = {};
  
                  fileId = createResult.id;
                  createResult.size = size;
  
                  Object.keys(uri.queryKey).forEach(function(val) {
                      data[val] = decodeURIComponent(uri.queryKey[val]);
                  });
  
                  data.file = file;
                  uploadParams.data = data;
  
                  // Upload the file to Amazon S3
                  _this.upload(uploadParams, function(err, result) {
                      if (err) {
                          callback(err, null);
                      } else {
                          // Mark file as uploaded
                          _this.markUploaded({
                              id: fileId,
                              size: size
                          }, function(err, result){
                              if (err) {
                                  callback(err, null);
                              } else {
                                  callback(null, createResult);
                              }
                          });
                      }
                  });
              }
          });
      }